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