javascript - `canplay` HTML5 音频事件未触发

标签 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>

但是,即使在按下播放按钮之后,警告也不会出现。我使用最新的 Chrome (Chrome 40)

最佳答案

您甚至在 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>

关于javascript - `canplay` HTML5 音频事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28379601/

相关文章:

javascript - 带有 ng-repeat 的动态 id

javascript - lambda : filter by "fuzzy search"

javascript - 停止 react 组件中的声音

ruby-on-rails - Ruby/Rails - 流式传输音频的方法 (mp3/wav/etc)...Gem/Plugins vs HTML5?

html - IE 9 无法从 Tomcat 加载 HTML5 音频

android - apache cordova android native 应用程序上的 html5 音频

javascript - JavaScript 可以向 Web 容器 Servlet 发送 HTTP 请求吗?

javascript - 合并多个对象数组并对重复值求和javascript

javascript - 未使用带有实时输入的 getFloatFrequencyData 获取网络音频中的频率数据

javascript - OOP 继承和对象实例