HTML5-video-timeupdate event nicht gefeuert wird.
Ich habe ein <video>
element auf meiner Seite:
<video id="myVideo">
<source src="vid.mp4" type="video/mp4" />
<source src="vid.ogg" type="video/ogg" />
</video>
In meiner JS es liest:
var v = $('#myVideo')[0];
v.addEventListener('timeupdate',function(){
alert('I changed');
},false);
Jetzt werde ich Feuer auf meiner Konsole und geben Sie:
$('#myVideo')[0].currentTime = 2;
Des angezeigten Bilds ändern wird, aber das Ereignis wird nicht ausgelöst. Nach den Angaben timeupdate
Feuer sollte, wenn currentTime was changed
, also ich denke nicht, ich bin mit der falschen Veranstaltung? Alle anderen Ereignisse, die ich verwende (d.h. play
& ended
) funktioniert ganz gut.
Gibt es viele ähnliche Fragen gibt, doch alle diese zu sein scheinen veraltet bugs? Ist das noch ein bug (ich habe das getestet in Chrome 17 und FF10) oder war da auch nichts ändern in der event-Struktur? Oder übersehe ich hier etwas ganz anderes?
EDIT:
Ich habe gerade festgestellt, dass dieses problem nur auftreten, wenn das video noch nicht gespielt. Also, wenn ich tun:
$('#myVideo')[0].play();
$('#myVideo')[0].pause();
$('#myVideo')[0].currentTime = 2;
Das Ereignis wird ausgelöst, genau wie es sein sollte.
InformationsquelleAutor m90 | 2012-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
das Ereignis wird nur ausgelöst, nachdem ein video wurde initialisiert. wie Sie wies darauf hin, in Ihr Bearbeiten-Kommentar, wo Sie die play() und pause () - das video, das lädt das video. gleiche sollte passieren, wenn Sie das preload-Attribut mit dem auto (auto = Autor denkt, dass der browser sollte laden Sie die gesamte video beim laden der Seite)
aber ich denke, Sie beantwortete Ihre Frage selbst?!
vielleicht können wir wieder reden, aneinander, aber wie kann man versuchen ein video, welches noch nicht geladen wurde (oder wird geladen) bereits? sind die Steuerelemente angezeigt, die ganze Zeit? haben Sie ein kurzes Beispiel für diesen Fall?! ..vielleicht diese Seite hilft auch:w3.org/2010/05/video/mediaevents.html - Liste aller Ereignisse in einem live-Beispiel. sucht könnte Ihr Attribut?!
Dies kann ein wenig kompliziert sein, aber siehe: goo.gl/uJyod - Sie können zum einblenden der
<video>
element zu sehen, was passiert. Geben Sie$('#video')[0].currentTime = 1;
in die Konsole und die video-update, noch der canvas-Darstellung nicht (es wartet auf einetimeupdate
Ereignis). Nachdem das video abgespielt wurde, es funktioniert einfach wie erwartet. Danke.InformationsquelleAutor longilong
Das Ereignis zu verwenden, ist nicht "timeupdate", ich denke, es ist "sucht".
Bei einer änderung der currentTime, zunächst eine "sucht" event passiert dann, sobald das video in sync mit der Zeit gewählt, die "seeked" - Ereignis ausgelöst wird.
Getestet habe ich dies mit Google 28 und es ging auch ohne .play() + .pause() auf das Steuerelement.
InformationsquelleAutor user217447
So, wie bereits angegeben, in den edit zu meiner Frage ich löste dies mit einem einfachen und eher dumm-Ansatz. Nur:
zu "initialisieren" der Abspielkopf. Dann sollte man in der Lage sein, um
timeupdate
Veranstaltungen, auch wenn niemand jemals startete das video.On a side note: seltsam, Einstellung
preload
zuauto
löst eine Vorspannung von dem video, doch es scheint nicht zum initialisieren der Abspielposition.InformationsquelleAutor m90