2010-04-29 3 views
190

Comment pouvez-vous détecter la fin d'un élément HTML5 <video>?Détecter la fin d'une vidéo HTML5

+0

documentation très utile avec la page de test d'Apple: http://developer.apple. com/bibliothèque/safari/# samplecode/HTML5VideoEventFlow/Inscriptions/events_js.html # // apple_ref/doc/uid/DTS40010085-events_js-DontLinkElementID_5 Tout ce que vous vouliez savoir sur les événements vidéo HTML5! – viebel

Répondre

219

Vous pouvez ajouter un écouteur d'événement avec 'terminé', comme le premier paramètre

Comme ceci:

<video src="video.ogv" id="myVideo"> 
    video not supported 
</video> 

<script type='text/javascript'> 
    document.getElementById('myVideo').addEventListener('ended',myHandler,false); 
    function myHandler(e) { 
     // What you want to do after the event 
    } 
</script> 
+5

Il s'agit de la seule vidéo "on end" qui fonctionne sur Internet. Bravo! – Isaac

+10

Pourquoi vérifiez-vous si e existe? –

+0

Fonctionne sur Android Chrome contrairement à 'onended' – Richard

125

Jetez un oeil à ce Everything You Need to Know About HTML5 Video and Audio poster sur le site Opera Dev dans la section "Je veux lancer mes propres contrôles".

Ceci est la section pertinente:

<video src="video.ogv"> 
    video not supported 
</video> 

vous pouvez utiliser:

<script> 
    var video = document.getElementsByTagName('video')[0]; 

    video.onended = function(e) { 
     /*Do things here!*/ 
    }; 
</script> 

onended est un événement standard HTML5 sur tous les éléments multimédias, consultez la documentation HTML5 media element (video/audio) events.

+1

Ce navigateur est-il spécifique? – UltimateBrent

+0

J'ai mis à jour ma réponse avec plus d'info. –

+0

Merci! Ça devrait le faire! – UltimateBrent

33

JQUERY

$("#video1").bind("ended", function() { 
    //TO DO: Your code goes here... 
}); 

HTML

<video id="video1" width="420"> 
    <source src="path/filename.mp4" type="video/mp4"> 
    Your browser does not support HTML5 video. 
</video> 

types d'événements HTML Audio and Video DOM Reference

+8

-1. '.on()' a été préféré à '.bind()' depuis jQuery 1.7, qui a été publié en 2011. Aussi, veuillez formater correctement votre code. –

3

Voici un exemple complet, j'espère que ça aide =).

<!DOCTYPE html> 
<html> 
<body> 

<video id="myVideo" controls="controls"> 
    <source src="your_video_file.mp4" type="video/mp4"> 
    <source src="your_video_file.mp4" type="video/ogg"> 
    Your browser does not support HTML5 video. 
</video> 

<script type='text/javascript'> 
    document.getElementById('myVideo').addEventListener('ended',myHandler,false); 
    function myHandler(e) { 
     if(!e) { e = window.event; } 
     alert("Video Finished"); 
    } 
</script> 
</body> 
</html> 
4

Voici une approche simple qui se déclenche lorsque la vidéo se termine.

<html> 
<body> 

    <video id="myVideo" controls="controls"> 
     <source src="video.mp4" type="video/mp4"> 
     etc ... 
    </video> 

</body> 
<script type='text/javascript'> 

    document.getElementById('myVideo').addEventListener('ended', function(e) { 

     alert('The End'); 

    }) 

</script> 
</html> 

En remplaçant la ligne « EventListener » le mot « terminé » par « pause » ou « jouer » pour capturer ces événements aussi bien.

+0

Vous avez une erreur de syntaxe dans ce code JS. Manquant) après la liste des arguments – frzsombor

0

Vous pouvez ajouter auditeur tous les événements vidéo nicluding ended, loadedmetadata, timeupdateended fonction est appelée lorsque la vidéo se termine

$("#myVideo").on("ended", function() { 
 
    //TO DO: Your code goes here... 
 
     alert("Video Finished"); 
 
}); 
 

 
$("#myVideo").on("loadedmetadata", function() { 
 
     alert("Video loaded"); 
 
    this.currentTime = 50;//50 seconds 
 
    //TO DO: Your code goes here... 
 
}); 
 

 

 
$("#myVideo").on("timeupdate", function() { 
 
    var cTime=this.currentTime; 
 
    if(cTime>0 && cTime % 2 == 0)//Alerts every 2 minutes once 
 
     alert("Video played "+cTime+" minutes"); 
 
    //TO DO: Your code goes here... 
 
    var perc=cTime * 100/this.duration; 
 
    if(perc % 10 == 0)//Alerts when every 10% watched 
 
     alert("Video played "+ perc +"%"); 
 
});
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
</head> 
 

 
<body> 
 

 
    <video id="myVideo" controls="controls"> 
 
    <source src="your_video_file.mp4" type="video/mp4"> 
 
     <source src="your_video_file.mp4" type="video/ogg"> 
 
     Your browser does not support HTML5 video. 
 
    </video> 
 

 
</body> 
 

 
</html>