javascript 音频加载

Posted

技术标签:

【中文标题】javascript 音频加载【英文标题】:javascript audio onload 【发布时间】:2011-11-24 12:16:32 【问题描述】:

我做了一个 javascript 音频测试。除了 audio.oncanplaythrough 和 audio.onended(这 2 个功能在 Chrome 上不起作用)之外,所有功能都可以在 Opera FF 和 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>

【问题讨论】:

这个问题和onload没有关系吧?请相应地更改标题。 【参考方案1】:

oncanplaythrough 是一个事件,而不是一个方法,另一个事件被称为ended 而不是onended

因此,您需要监听事件并采取行动。试试:

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

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

【讨论】:

:D 'oncanplaythrough' 后面有一个空格。现在可以了,谢谢 所以有(固定)!对于那个很抱歉。很高兴它解决了你的问题。 这应该是canplaythrough【参考方案2】:

通过 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();

【讨论】:

...我问:如何在Chrome中使用audio.oncanplaythrough和audio.onended

以上是关于javascript 音频加载的主要内容,如果未能解决你的问题,请参考以下文章

预加载 Javascript 音频以在脚本中播放

JavaScript 中的 HTML5 音频:我做错了啥?

JavaScript 音频持续时间不适用于 ALAC 文件(HTML 音频持续时间属性)

如何使用 javascript 控制 HTML5 音频标签

JavaScript + HTML5:音频在某些情况下只会播放一次

同时触发javascript和sql查询[重复]