Internet Explorer 10:<audio>“play”事件处理程序仅发生一次?</audio>

时间:2013-09-25 18:03:24

标签: javascript internet-explorer-10 html5-audio

这是一个简单的测试(jsFiddle demo):

<!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');一次。这种行为是微软打算还是我做错了?对此有一个很好的解决方法吗?

1 个答案:

答案 0 :(得分:1)

目前的规范说明play事件被触发的先决条件是“ paused是新的

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

所以,这可能意味着它只在第一次触发,并在从暂停状态切换后触发。您可以尝试在audioElement.pause()

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

因此,虽然这似乎可以解决问题,但根据您的需要,它可能不是适用的解决方法。在这种情况下,您可以使用playing event