2010-10-06 14 views
14

Parfois, ma vidéo HTML5 ne génère pas un événement "terminé" sur l'iPad. Cela ne se produit que lorsque j'omets l'attribut "controls" et que je lance la lecture à partir de javascript. Cela fonctionne habituellement bien la première fois, mais la deuxième fois la vidéo se joue mais ne génère pas un événement "terminé". J'appelle "load()" après chaque lecture afin de réinitialiser au début du clip (parce que la recherche ne semble pas fonctionner du tout - voir this thread). J'ai une solution de contournement, qui consiste à suivre les événements "timeupdate" et effectuer mes actions de fin de jeu lorsque vid.currentTime>=vid.duration, mais je me demandais si quelqu'un d'autre avait connu ce problème. Un code pertinent suit.manquant vidéo html5 "terminé" événement sur iPad

Vive -Chris

Le document fonction onload:

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

Le 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> 

Répondre

2

Ne pas utiliser load() pour forcer la recherche en cours. Si vous définissez video.currentTime sur 0.1 au lieu de 0, la vidéo passera au début et l'événement ended sera toujours distribué correctement. (Testé sur iOS 3.2 et 4.2)

+0

Merci! Savez-vous si cela documenté quelque part? Ou est-ce un bug? seek (0) fonctionne dans les navigateurs de bureau. – wodenx

+1

c'est un bug, je l'ai "documenté" sur mon propre blog: http://blog.millermedeiros.com/2011/03/html5-video-issues-on-the-ipad-and-how-to-solve -leur/ –