正確方法我用<音頻>和<視頻>與預緊=「無」,然後嘗試從Javascript打得到我Firefox和Chrome不同的結果。打<audio> + <video>從Javascript
比方說,我是用預緊=「自動」或預裝=「元數據」:
audio.src = "filename";
audio.play();
,似乎工作在Firefox和Chrome的罰款,但我想用預緊=「無」,然後Chrome dossent play。
所以我想這個代碼預緊=「無」:
audio.src = url;
audio.load();
audio.addEventListener('canplay', function(e) {
audio.play(); // For some reason this dossent work in Firefox
}, false);
audio.play(); // Added this so Firefox would play
我不知道這是做了正確的道路。
我使用的是: 火狐20.0.1 的Chrome 25.0.1364.172米
我做了一個演示:http://netkoder.dk/test/test0217.html
編輯:
在第二音頻播放器(上演示頁面)似乎使用preload =「none」時,您必須使用load()。 但是,在load()之後立即使用play(),還是在播放之前使用事件等待文件加載的正確方法是正確的?
在第三個音頻播放器中,似乎Firefox 20.0.1 dossent在與addEventListener()一起使用時正確支持canplay事件,因爲它在load()之後觸發,它在play()之後觸發,並且在觸發時通過聲音這似乎是戲劇應該奏效的方式。 使用.oncanplay工作。
所以下面的代碼似乎工作:
function afspil2(url) {
afspiller2.src = url;
afspiller2.load(); // use load() when <audio> has preload="none"
afspiller2.play();
}
function afspil3(url) {
afspiller3.src = url;
afspiller3.load(); // use load() when <audio> has preload="none"
//afspiller3.addEventListener('canplay', function() { // For some reason this dossent work correctly in Firefox 20.0.1, its triggers after load() and when scrubbing
// afspiller3.play();
//}, false);
afspiller3.oncanplay = afspiller3.play(); // Works in Firefox 20.0.1
}
我更新了演示,包括更改:http://netkoder.dk/test/test0217.html
我加入afspil3()函數dossent內的addEventListener的方式似乎不錯,因爲第一時間函數被稱爲addEventListener裏面的代碼被稱爲1次。第二次調用函數時,addEventListener裏面的代碼被調用2次,然後3次,等等。
你能提供一個完整的例子,說明你在哪裏設置'preload =「none」'而且它不起作用嗎? – user1091949 2013-05-04 00:49:22
演示:http://netkoder.dk/test/test0217.html – scootergrisen 2013-05-04 01:40:02