HTML5音频 - 只播放一次
我使用Chrome,这是我的代码:HTML5音频 - 只播放一次
<audio id="letter_audio" src="audio/bomb.mp3" type="audio/mp3" preload="auto"></audio>
$('.sound').live('click', function() {
var sound = $("#letter_audio")[0];
sound.pause();
sound.currentTime = 0;
sound.play();
return false;
});
声音怎么来扮演我第一次点击播放。然后当我再次点击时,它会暂停,就像代码一样。但它只是暂停?我希望它可以播放,然后当我再次点击它时,回到0并再次播放代码?
试试这个..基本上,重置src
属性应该根据需要重置音频。
$('.sound').live('click', function() {
var sound = $("#letter_audio")[0];
sound.src = "audio/bomb.mp3";
sound.play();
return false;
});
我已经重放音频类似的问题,但设法通过调用play()
调用之前load()
的方法来解决这个问题。试试这个:
$('.sound').live('click', function() {
var sound = $("#letter_audio")[0];
sound.load();
sound.play();
return false;
});
我觉得这是不是有两个原因重置src
属性更好:
- 保持
src
值在页面内容,而不是在JavaScript -
作品时您嵌入多个不同音频格式的
<source>
元素:<audio id="letter_audio"> <source src="audio/bomb.mp3" type="audio/mp3" preload="auto"/> <source src="audio/bomb.ogg" type="audio/ogg" preload="auto"/> </audio>
适合我!谢谢! – kronuus 2013-03-08 16:54:19
这是一个很好的解决方案,但我希望我能更好地理解问题的原因。 '.load()'看起来像基于[MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement#Methods)和[WHATWG](https:// html)的矫枉过正。 spec.whatwg.org/multipage/media.html#loading-the-media-resource)的描述。如果在尝试播放()后输出'sound.error',则消息“无法发送音频数据包进行解码”。这听起来像是一个bug,但我能找到的东西都是非常松散的。 '.load()'对于OGG文件不是必需的。 – Vince 2018-02-03 21:10:37
似乎暂时的currentTime的属性为只读(和在2011年已经得到了wont-fix status)
但是,(再次)你的音频对象上设置src
后 - 像也被提出@Lloyd - currentTime属性可以设置(至少在linux的当前chrome版本(24.0.1312.69))。
这意味着通过添加行奇怪
audio.src = audio.src
您的例子做什么它应该。
完全:
$('.sound').live('click', function() {
var sound = $("#letter_audio")[0];
sound.src = sound.src;
sound.pause();
sound.currentTime = 0;
sound.play();
return false;
});
,因为它是足够设置src
一次,你可能想在安装过程中的某个地方调用它。
你可以使用php在URL的末尾添加一个查询time();
<source src="URLtoTrack.mp3?<?php echo time(); ?>" />
为我工作。
嗨,你有没有找到解决方案? – Lloyd 2012-02-21 12:34:14
哪个解决方案正在工作 – 2012-10-17 10:00:34
汤姆的解决方案添加sound.load()为我工作 – kronuus 2013-03-08 16:55:07