2013-09-25 69 views
-1

下面是一个简单的测试(jsFiddle demo):Internet Explorer 10:<audio>“play”事件处理程序仅发生一次?

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Audio Test</title> 
    </head> 
    <body> 
     <a href="javascript:document.getElementById('audio_test').play();">Play Audio</a> 

     <audio id="audio_test" onplay="javascript:console.log('played');" onended="javascript:console.log('ended');"> 
      <source src="http://www.html5tutorial.info/media/vincent.ogg" type="audio/ogg"> 
      <source src="http://www.html5tutorial.info/media/vincent.mp3" type="audio/mpeg"> 
     </audio> 
    </body> 
</html> 

使用上面的代码,并在播放音频文件多次时,Internet Explorer 10只运行一次console.log('played');。这种行为是由Microsoft打算还是我做错了什么?有没有一个很好的解决方法?

回答

1

目前的规范说为被解雇的play事件的前提是“paused是新假

http://www.w3.org/TR/html5/embedded-content-0.html#event-media-play

所以,这可能意味着它仅在第一次火灾,并从暂停状态切换后。你可以尝试在ended

onended="javascript:this.paused(); console.log('ended'); 

调用audioElement.pause()因此,尽管这似乎是解决这个问题,它可能不是根据自己的需要适用的解决方法。在这种情况下,也许你可以利用playing event

相关问题