-1

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

<!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');一次。这种行为是微软有意的还是我做错了什么?有没有好的解决方法?

4

1 回答 1

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事件

于 2013-09-25T20:01:24.427 回答