【发布时间】:2013-04-28 11:13:18
【问题描述】:
我在使用
假设我使用的是 preload="auto" 或 preload="metadata" :
audio.src = "filename";
audio.play();
这似乎在 Firefox 和 Chrome 中都可以正常工作,但我想使用 preload="none" 然后 Chrome dossent 播放。
所以我正在尝试使用 preload="none" 的代码:
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 铬 25.0.1364.172 米
我做了一个演示:http://netkoder.dk/test/test0217.html
编辑:
在第二个音频播放器(在演示页面上)似乎使用 preload="none" 时必须使用 load()。 但是在 load() 之后立即使用 play() 是正确的,还是在播放之前使用事件等待文件加载的正确方法?
在第三个音频播放器中,似乎 Firefox 20.0.1 dossent 在与 addEventListener() 一起使用时正确支持 canplay 事件,因为它在 load() 之后触发,它在 play() 之后触发,并且在擦洗声音时也会触发dossent 似乎是 canplay 应该工作的方式。 使用 .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() 函数中添加 addEventListener 的方法看起来不错,因为第一次调用该函数时,addEventListener 中的代码被调用了 1 次。第二次调用函数,addEventListener里面的代码被调用了2次,然后是3次,以此类推。
【问题讨论】:
-
你能提供一个完整的例子来说明你在哪里设置
preload="none"并且它不起作用吗?
标签: javascript html html5-video html5-audio