這裏是我的代碼:播放問題HTML5音頻多次在Safari
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();
}
}
期望的行爲:
當我調用播放()聲音應該播放一次。應該只有1個請求到服務器 - 頁面加載。 play()的多個呼叫不應觸發多個請求。
實際行爲:
- Firefox(19.0.2),Chrome(26.0.1410.43)和Opera(12.15)按預期工作。
- Safari(6.0.3)只播放一次所需的聲音,然後在要求時拒絕播放它或任何其他聲音。
我試着在audio[0].play()
之前加入audio[0].load()
,但這會導致瀏覽器在每次播放音頻時都會發出請求,這是完全不希望的。
小提琴:http://jsfiddle.net/Tpvfm/
Safari瀏覽器有一些有趣的音頻問題。我注意到的一件事是,如果沒有用戶輸入以編程方式觸發,音頻將無法啓動。實質上,如果您的聲音在用戶點擊或執行操作時被觸發,Safari很可能會拒絕播放它。 audio [i] .play()如何被調用? – akamaozu 2013-04-10 18:16:08
在示例jsfiddle中,它通過用戶單擊進行調用。在我們的代碼中,它是以編程方式觸發的......您是否有任何關於該主題的文檔/文章的鏈接? – 2013-04-11 08:36:42