正确方法我用<音频>和<视频>与预紧=“无”,然后尝试从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