Video.js - loadeddata Ereignis wird nie ausgelöst
Bin ich Integration Video.js in einem Projekt und haben ein paar Fragen.
Habe ich es in mein HTML als:
<video id="vidView" class="video-js vjs-default-skin" width="320" height="320"
poster="/siteImages/Dummy.png" preload="auto">
<source type="video/mp4" src="" \>
</video>
Und in meinem javascript lade ich eine Quelle und zu verwalten, um es zu spielen.
var vidPlayer = _V_("vidView");
vidPlayer.src({ type: "video/mp4", src: vidlink });
vidPlayer.play();
Nur tun dies programmatisch Probleme - jeder zweite laden der Quelle und spielen funktionieren würde. Ich habe mir vorgestellt, das ich versuchte zu spielen, bevor video.js fertig war, so suchte Listener verwenden, um zu starten spielen Sie auf der richtigen Zeit.
Habe ich gefunden, dass bestimmte Ereignisse niemals Feuer an alle. Ich kann nicht alles aus "loadedalldata" Ereignis oder "loadeddata". Die "loadstart" - Ereignis wird ausgelöst, mindestens, also setzte ich meine .play () - Befehl drin.
vidPlayer.addEvent("loadstart", function(){ console.log("LOAD START Fired" );
var myPlayer = this;
myPlayer.play();
} );
Aber es ist immer noch nicht zuverlässig. Ich sehe Nachrichten auf meiner Konsole "Versuch fortsetzen!" mehrere Male. Es spielt für ein paar videos, aber bekommt verzetteln sich manchmal.
Bin ich etwas fehlt in "loadeddata" Ereignis?
Auch, Verwandte Q - merke ich, dass die docs sagen, dass die syntax für das entfernen eines Ereignis-Listeners ist:
myPlayer.removeEvent("eventName", myFunc);
Ist das richtig? Es scheint, wie die "myFunc" - Teil ist überflüssig, und ich Frage mich, wenn das ein copy/paste Fehler in die Dokumentation oder wenn das die korrekte syntax.
Thx im Voraus.
poster
URL (die ' %}
), die möglicherweise auch damit zusammenhängen.InformationsquelleAutor RossGK | 2013-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, Sie lief in das gleiche Problem habe ich. Wenn Ihr browser die HTML5-video (anstelle von Flash-fallback) Einige Veranstaltungen, wie
loadedmetadata
undloadeddata
, kann Feuer vor Video.js bindet den Ereignis-Listener.Dies ist besonders wahr, wenn Sie tun, einige Vergleichsseiten, und es gibt eine Verzögerung zwischen dem Zeitpunkt, an dem video-start zu laden und wenn Sie die Initialisierung der Video.js. Es scheint auch auftreten, wenn es eine zwischengespeicherte Kopie, die ist, warum es funktioniert auf jedem zweiten refresh (invalidieren des cache).
Die Lösung ist, nur werfen Sie Ihre video-initlisation Sachen in der
<head>
statt am Ende des Dokuments. Wenn das nicht ideal ist (und das war nicht für uns), haben wir einen Ereignis-listener, um die<head>
und dann überprüft, nachdem wir Sie initialisiert den Spieler. Zum BeispielIn
<head>
:Dann später in Ihrem Skript:
window.addEventListener
wird nicht unterstützt im IE7/8, aber das ist okay, weil Sie nicht die Unterstützung HTML5-video-wie auch immer, so wird es nicht immer Feuer. IE9 unterstütztwindow.addEventListener
- und HTML5-video, so dass es wie erwartet funktionieren wird.Prüfen wir auch, dass die
techName
isthtml5
, da der Flash-player wird erstellt, wenn wir initialisieren die Video.js Objekt, so dass die Veranstaltung gar nicht hätte ausgelöst zuvor.InformationsquelleAutor Lachlan McD.
loadeddata
nicht unbedingt Feuer, bevor die Wiedergabe beginnt. In Flash-das tut Sie nie, mit HTML5 wird das Ereignis weitergeleitet von video-element so hängt es von der browser-Verhalten.loadedalldata
ist, wenn das gesamte video heruntergeladen ist, so ist nicht wahrscheinlich, bevor die Wiedergabe beginnt.Legen Sie fest, welche Funktion zu entfernen von der Veranstaltung, da könnte man gebunden haben mehr als eine Funktion zu der Veranstaltung, z.B.
InformationsquelleAutor misterben