Я получаю разные результаты в Firefox и Chrome при использовании «аудио» и «видео» с preload = «none», а затем пытаюсь воспроизвести из Javascript.
Допустим, я использовал preload="auto" или preload="metadata":
audio.src = "filename";
audio.play();
Кажется, это отлично работает как в Firefox, так и в Chrome, но я хочу использовать preload = "none", а затем Chrome dossent play.
Итак, я пробую этот код с 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
Я не знаю, правильный ли это способ.
Я использую: Firefox 20.0.1 Chrome 25.0.1364.172 м
Я сделал демонстрацию: http://netkoder.dk/test/test0217.html
Изменить:
Во втором аудиоплеере (на демонстрационной странице) кажется, что при использовании preload="none" вы должны использовать load(). Но правильно ли просто использовать play() сразу после load() или правильный способ использовать событие, чтобы дождаться загрузки файла перед его воспроизведением?
В третьем аудиоплеере кажется, что Firefox 20.0.1 поддерживает событие canplay правильно при использовании с addEventListener(), потому что он не запускает триггер после load(), он срабатывает после play(), а также срабатывает при очистке, хотя звук, который кажется быть так, как 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
Мой способ добавления addEventListener внутри функции afspil3() кажется хорошим, потому что при первом вызове функции код внутри addEventListener вызывается 1 раз. При втором вызове функции код внутри addEventListener вызывается 2 раза, затем 3 раза и так далее.
preload="none"
, и это не работает? - person user1091949   schedule 04.05.2013