JavaScript音频onload事件

8
我做了一个 JavaScript 音频测试,所有功能在 Opera、FF 和 Chrome 中都能正常使用,除了 audio.oncanplaythrough 和 audio.onended(这两个函数在 Chrome 上不起作用)。
<!DOCTYPE html>
<html>
<body>

<script>
var audio = new Audio("http://www.w3schools.com/html5/song.ogg");

audio.oncanplaythrough = function(){
audio.play();
}

audio.onended = function(){
alert('ended');
}

</script>
<a href="#" onclick="audio.play();">start</a><br/>
<a href="#" onclick="audio.pause();">pause</a><br/>
<a href="#" onclick="audio.volume=prompt('from 0 to 1',0.7)">volume</a><br/>
<a href="#" onclick="audio.currentTime = 3;">jump</a><br/>
</body>
</html>

1
这个问题与onload无关,请相应地更改标题。 - DarkTrick
2个回答

21

oncanplaythrough 是一个事件,而不是方法。另一个事件叫做 ended 而不是 onended

因此,您需要监听这些事件并对其进行操作。尝试使用以下代码:

audio.addEventListener('ended', function() { 
   alert('ended');
}, false);

并且

audio.addEventListener('canplaythrough', function() { 
   audio.play();
}, false);

:D 在 'oncanplaythrough ' 后面多了一个空格。现在它可以正常工作了,谢谢。 - Uw001
所以问题已经(被修复)了!很抱歉造成了困扰。不过很高兴它解决了你的问题。 - Ian Devlin
3
应该翻译为“可以播放”。 - Eric

4
通过JavaScript添加和播放声音
var audioElement = document.createElement('audio');
audioElement.setAttribute('src', 'loading.ogg');
audioElement.play();

获取歌曲文件路径和时长

audioElement.src;
audioElement.duration;

加载声音

var audioElement = document.createElement('audio');
audioElement.setAttribute('src', 'Mogwai2009-04-29_acidjack_t16.ogg');
audioElement.load()
audioElement.addEventListener("load", function() {
  audioElement.play();
  $(".duration span").html(audioElement.duration);
  $(".filename span").html(audioElement.src);
}, true);

停止一首歌曲

audioElement.pause();

更改音量

audioElement.volume=0;

在歌曲的第35秒准确播放

audioElement.currentTime=35;
audioElement.play();

2
我问:如何在Chrome中使用audio.oncanplaythrough和audio.onended? - Uw001

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接