`canplay` HTML5音频事件未触发

时间:2015-02-07 07:10:18

标签: javascript html5-audio

我试图确定HTML5音频元素何时可以开始播放,以便我可以通知用户。我使用以下代码:

<script type="text/javascript">
    var audio = document.getElementById("audio")
</script>

<audio id="audio" hidden loop>
<source src="/static/music/music.mp3" type="audio/mpeg">
<source src="/static/music/music.ogg" type="audio/ogg">
<source src="/static/music/music.wav" type="audio/wav">
No support for HTML5 audio!
</audio>

<div id="playButton" onclick="audio.play();audio.addEventListener('canplay',function() {
    alert("ready!");
});">PLAY</div>

但是,即使在按下playButton之后,警报也不会出现。我正在使用lates Chrome(Chrome 40)

2 个答案:

答案 0 :(得分:2)

在JavaScript发现之前,您正在获取元素!所以你根本就没有音频。

试试这个:

<audio id="audio" hidden loop>
<source src="music.mp3" type="audio/mpeg">
No support for HTML5 audio!
</audio>

<div id="playButton" onclick="play()">PLAY</div>
<script type="text/javascript">
    var audio = document.getElementById("audio");

    // Binding event
    audio.oncanplay = function() {
        alert("Can start playing video");
    };

    // Playing the audio
    function play() {
        audio.play();
    }
</script>

答案 1 :(得分:1)

添加Shreejibawa发布的内容,关于加载DOM后需要执行的脚本,请查看HTML5音频和javascript事件的文档。

https://developer.mozilla.org/en-US/docs/Web/Events/canplay