这是我的代码:
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() 时,声音应该播放一次。对服务器的请求应该只有 1 个 - 在页面加载时。多次调用 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/