У меня есть элемент <video>
на моей странице:
<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);
Теперь я включу консоль и наберу:
$('#myVideo')[0].currentTime = 2;
Отображаемый кадр изменится, но событие не сработает. Согласно спецификации timeupdate
должен срабатывать при currentTime was changed
, поэтому я не думаю, что использую неправильное событие? Все остальные события, которыми я пользуюсь (т. Е. play
& ended
), работают нормально.
Есть много подобных вопросов, но все они кажутся устаревшими ошибками? Это еще одна ошибка (я тестировал в Chrome 17 и FF10) или что-то изменилось в структуре событий? Или я что-то упускаю совсем другое?
EDIT:
Я просто заметил, что эта проблема возникнет только тогда, когда видео еще не воспроизводилось. Поэтому, когда я делаю:
$('#myVideo')[0].play();
$('#myVideo')[0].pause();
$('#myVideo')[0].currentTime = 2;
Событие будет происходить так же, как и должно.