这是我的代码:
Html格式:
<div id="audio-files" style="display: none;">
<audio id="click-sound">
<source src="/assets/click.mp3" type="audio/mpeg">
<source src="/assets/click.wav" type="audio/wav">
</audio>
</div>
JavaScript语言:
play: function() {
var audio = $('#audio-files').find('audio#click-sound');
if (audio.length) {
audio[0].play();
}
}
期望行为:
当我调用play()时,声音应该播放一次。在页面加载时,应该只有一个对服务器的请求。对play()的多次调用不应触发多个请求。
实际行为:
-Firefox(19.0.2)、Chrome(26.0.1410.43)和Opera(12.15)运行正常。
-Safari(6.0.3)只播放一次所需的声音,然后在被要求播放时拒绝播放该声音或任何其他声音。
我试着添加
audio[0].load()
之前
audio[0].play()
但这导致浏览器每次被要求播放音频时都会发出请求,这是完全不可取的。
小提琴:
http://jsfiddle.net/Tpvfm/