Der readyState des Elements ist HAVE_NOTHING

8

Ich versuche, ein Video zu laden und dann das Video basierend auf dem Scrollen des Fensters abzuspielen. Was ich bisher in Safari und Firefox aber nicht in Chrome gearbeitet habe. Der Fehler, den ich in Chrome bekomme, ist: Uncaught InvalidStateError: Fehler beim Festlegen der Eigenschaft 'currentTime' für 'HTMLMediaElement': Der readyState des Elements lautet HAVE_NOTHING.

Weiß jemand, was ich falsch mache?

%Vor%     
Justin Young 28.04.2014, 20:21
quelle

2 Antworten

9

Dieser Fehler wird immer dann ausgelöst, wenn Sie currentTime festlegen, bevor der Browser die duration des Videos kennt. Die Dauer ist Teil der "Metadaten", die sich normalerweise in der Kopfzeile der Videodatei befinden und die Höhe und Breite umfassen.

Wenn Sie ein Videoelement ohne das Attribut preload haben, versucht der Browser normalerweise, die Metadaten bald nach dem Laden der Seite zu laden. Aber abhängig von den Besonderheiten des Browsers, dem Rest des Inhalts auf der Seite und der Geschwindigkeit der Netzwerkverbindung, kann es nicht passieren, bis Sie mindestens einmal gescrollt haben.

Eine Lösung sieht ungefähr so ​​aus.

%Vor%

Das sollte den Fehler verschwinden lassen. Wenn Sie dies versuchen und das loadedmetadata -Ereignis nie ausgelöst wird, versuchen Sie, dies am Ende hinzuzufügen, um es zu erzwingen:

%Vor%

Bearbeiten: Definiert und setzt scrollPosition . Hier ist ein funktionierendes Beispiel: Ссылка

    
brianchirls 28.04.2014, 23:37
quelle
-1

Ich habe gerade einen Codepen gefunden, der ein bisschen schneller ist und fast dasselbe mit weniger Code macht: Ссылка

%Vor%     
user3159159 09.06.2014 06:53
quelle