2010-10-06 7 views
14

Manchmal erzeugt mein HTML5-Video kein "beendet" Ereignis auf dem iPad. Scheint nur zu geschehen, wenn ich das Attribut "controls" weglasse und die Wiedergabe von Javascript starte. Es funktioniert normalerweise beim ersten Mal gut, aber beim zweiten Mal wird das Video abgespielt, aber es wird kein "beendet" -Ereignis generiert. Ich rufe nach jeder Wiedergabe "load()" auf, um zum Anfang des Clips zurückzukehren (weil das Suchen überhaupt nicht funktioniert - siehe this thread). Ich habe einen Workaround, der "timeupdate" -Ereignisse verfolgen und meine End-of-Play-Aktionen ausführen soll, wenn vid.currentTime>=vid.duration, aber ich fragte mich, ob jemand anderes dieses Problem erfahren hatte. Einige relevante Code folgt.fehlt html5 Video "beendete" Ereignis auf iPad

Prost -Chris

Das Dokument onload Funktion:

function load() { 
    var vid = document.getElementById('vid'); 
    vid.addEventListener('ended', function() { 
     alert('video ended'); 
     vid.load(); 
    },false); 
} 

Die html:

<body onload="load();"> 
<h1>HTML5 Video Test</h1> 
<input type="submit" value="Play" onclick="document.getElementById('vid').play();"> 
<video id="vid" src="test.mov" width="640" height="480"></video> 
</body> 

Antwort

2

Sie load() nicht die Such zu zwingen verwenden. Wenn Sie.auf 0.1 anstelle von 0 setzen, springt das Video an den Anfang und das ended-Ereignis wird weiterhin ordnungsgemäß gesendet. (Getestet auf iOS 3.2 und 4.2)

+0

Vielen Dank! Weißt du, ob das irgendwo dokumentiert ist? Oder ist es ein Fehler? seek (0) funktioniert in Desktop-Browsern. – wodenx

+1

es ist ein Fehler, ich habe es auf meinem eigenen Blog "dokumentiert": http://blog.millermedeiros.com/2011/03/html5-video-issues-on-the-ipad-and-how-to-solve -Sie/ –