Come fai a rilevare quando un <video>
elemento HTML5 ha terminato la riproduzione?
Risposte:
Puoi aggiungere un listener di eventi con "terminato" come primo parametro
Come questo :
<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>
if(!e) { e = window.event; }
affermazione che questa risposta includeva originariamente è un codice specifico di IE per ottenere l'ultimo evento dall'interno di un gestore di eventi collegato alle attachEvent
prime versioni di IE. Dal momento che in questo caso, il gestore è collegato con addEventListener
(e quelle prime versioni di IE sono irrilevanti per le persone che si occupano di video HTML5), era completamente inutile e l'ho rimosso.
Dai un'occhiata a questo post Tutto quello che devi sapere su video e audio HTML5 sul sito di Opera Dev nella sezione "Voglio eseguire i miei controlli".
Questa è la sezione pertinente:
<video src="video.ogv">
video not supported
</video>
allora puoi usare:
<script>
var video = document.getElementsByTagName('video')[0];
video.onended = function(e) {
/*Do things here!*/
};
</script>
onended
è un evento standard HTML5 su tutti gli elementi multimediali, vedere la documentazione degli eventi degli elementi multimediali HTML5 (video / audio) .
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>
Tipi di evento Riferimento DOM audio e video HTML
.on()
è stato preferito rispetto a .bind()
jQuery 1.7, che è stato rilasciato nel 2011. Inoltre, formattare correttamente il codice.
Ecco un esempio completo, spero che aiuti =).
<!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>
Ecco un semplice approccio che si attiva quando il video finisce.
<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>
Nella riga "EventListener" sostituire la parola "terminato" con "pausa" o "riproduzione" per acquisire anche questi eventi.
Puoi aggiungere listener tutti gli eventi video nicluding ended, loadedmetadata, timeupdate
dove la ended
funzione viene chiamata quando il video finisce
$("#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>