У меня есть элемент на моей странице:
<video id="myVideo">
<source src="vid.mp4" type="video/mp4" />
<source src="vid.ogg" type="video/ogg" />
</video>
В моем JS он гласит:
var v = $('#myVideo')[0];
v.addEventListener('timeupdate',function(){
alert('I changed');
},false);
Теперь я запущу свою консоль и type:
$('#myVideo')[0].currentTime = 2;
Отображаемый кадр изменится, но событие не сработает. Согласно спецификациям timeupdate
должно срабатывать, когда currentTime было изменено
, поэтому я не думаю, что использую неправильное событие? Все остальные события, которые я использую (например, play
и end
), работают нормально.
Есть много похожих вопросов, но все они кажутся устаревшими ошибками? Это еще одна ошибка (я тестировал в Chrome 17 и FF10) или что-то изменилось в структуре событий? Или я что-то совсем другое упускаю?
РЕДАКТИРОВАТЬ: Я только что заметил, что эта проблема возникает только тогда, когда видео еще не воспроизведено. Итак, когда я это сделаю:
$('#myVideo')[0].play();
$('#myVideo')[0].pause();
$('#myVideo')[0].currentTime = 2;
Событие сработает, как и должно быть.