2011-05-17 179 views
2

我认为这段代码应该播放声音,然后显示一个警告框。它适用于IE9,但与Chrome浏览器& Firefox,声音播放,但回调永远不会被调用 - 所以没有警报框。JavaScript回调适用于IE,但不适用于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> 
+0

哪里是? – wong2 2011-05-17 15:18:07

回答

4

只是可以肯定,这不是无效的HTML的问题,使用下面的有效版本

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

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

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

谢谢,就是这样。 – jack 2011-05-17 16:19:03

3

onended似乎是专门针对IE9,Chrome和Firefox会触发事件ended,可以绑定一个函数,像这样:v.addEventListener("ended", function() { alert("ended"); }

记住,HTML5规范仍处于开发阶段,并并非所有的浏览器都以同样的方式实现它。

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

+0

谢谢!该代码适用于IE和Chrome浏览器,但为了使其与Firefox兼容,我必须添加'false'参数:audio.addEventListener(“ended”,function(e){alert(“ended”);},false ); – jack 2011-05-17 16:14:11

相关问题