javascript回调适用于IE,但不适用于Chrome或Firefox

时间:2011-05-17 15:11:35

标签: javascript html5 callback

我认为此代码应播放声音,然后显示警告框。它适用于IE9,但使用Chrome& Firefox,声音播放,但回调从未被调用 - 所以没有警报框。

我是一名c#,c ++程序员,刚接触javascript,我可以使用一些帮助!感谢。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script type="text/javascript">
        var playAll= function(){
             var audio = document.getElementById('s');

             var callback = function(e){
                alert("ended"); 
             };

            audio.onended = callback;
            audio.play();
        }

    </script>
</head>

<body>
    <input name="Button1" type="button" value="Play" onclick="playAll()"/>

    <audio ID="s">
    <source src="s.mp3"  >
    <source src="s.ogg"  >
</body>

</html>

2 个答案:

答案 0 :(得分:4)

为了确保它不是无效html的问题,请使用以下有效版本

<audio ID="s">
  <source src="s.mp3" />
  <source src="s.ogg" />
</audio>

然后使用正确的方式绑定事件。

audio.addEventListener( "ended", callback, false);

答案 1 :(得分:3)

onended似乎是针对IE9的,Chrome和Firefox会触发事件ended,您可以将事件绑定到这样:v.addEventListener("ended", function() { alert("ended"); }

请记住,HTML5规范仍在开发中,并非所有浏览器都以相同的方式实现它。

这里有一个类似的问题:HTML 5 Video OnEnded Event not Firing