Виявити, коли закінчується відео HTML5


Відповіді:


311

Ви можете додати слухача події "закінченим" як перший парам

Подобається це :

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

8
Це єдине відео "на завершення", яке працює у всьому Інтернеті. Браво!
— Ісаак

10
Чому ви перевіряєте, чи існує e?
— Аллан Степс

3
@AllanStepps З того, що я можу зібрати, if(!e) { e = window.event; }твердження про те, що ця відповідь спочатку містила специфічний для IE код для отримання останньої події з обробника подій, приєднаного до attachEventранніх версій IE. Оскільки в цьому випадку обробник додається addEventListener(а ці ранні версії IE не мають відношення до людей, що мають відео з HTML5), це було абсолютно непотрібно, і я його видалив.
— Марк Амері

3
Один момент, який слід зауважити, використовуючи цей метод, Safari на El Capitan проти OS X (10.11) не вловлює події "закінчення". Тож у такому випадку мені потрібно було скористатись подією 'timeupdate', а потім перевірити, коли цей час поточного часу знову дорівнював 0.
— Cam

2
Також не забудьте встановити цикл на значення false, інакше закінчена подія не буде запущена.
— Ізраїль Моралес

134

Погляньте на все, що вам потрібно знати про відео та аудіо HTML5 на веб-сайті Opera Dev у розділі «Я хочу прокрутити власні елементи керування».

Це відповідний розділ:

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

тоді ви можете використовувати:

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

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

onended- це стандартна подія HTML5 для всіх медіа-елементів, дивіться документацію про медіа-елемент HTML5 (відео / аудіо) події .


2
Я намагався зловити подію, що закінчилася, точно так само, як ви представили, але ця подія не викликає розгону. Я під Safari 5.0.4 (6533.20.27)
— AntonAL

@AntonAL: Якщо у вас виникли проблеми, я ставлю це як нове запитання.
— Аластер Піттс

@All: Ви також можете зробити це так. <video class = "video_player" id = "video" poster = "images / video-pc.jpg" tabindex = "0" висота = "100%" onended = "myHandler ()">
— VendettaDroid

5
@AlastairPitts Це неправда в Chrome. Відповідь Darkroro - це єдиний спосіб, коли я змусив його працювати з Chrome. Це все ще працювало на Firefox.
— Джефф

Мертві посилання. w3schools.com/tags/ref_eventattributes.asp => Медіа події
— Aurelien

36

ПІДКЛЮЧЕННЯ

$("#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>

Типи подій HTML Посилання на DOM для аудіо та відео


11
-1. .on()надано перевагу .bind()з jQuery 1.7, яка вийшла у 2011 році. Також, будь ласка, форматуйте свій код належним чином.
— Марк Амерді

4

Ось повний приклад, сподіваюся, що це допомагає =).

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

Ось простий підхід, який спрацьовує, коли відео закінчується.

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

У рядку "EventListener" слово "закінчилося" замініть словом "пауза" або "грати", щоб також захопити ці події.


Ви маєте синтаксичну помилку в цьому JS-коді. Відсутній) після списку аргументів
— frzsombor

1

Ви можете просто додати onended="myFunction()"свій відеотег.

<video onended="myFunction()">
  ...
  Your browser does not support the video tag.
</video>

<script type='text/javascript'>
  function myFunction(){
    console.log("The End.")
  }
</script>

0

Ви можете додати слухача до всіх відеоподій, не враховуючи, ended, loadedmetadata, timeupdateде endedфункція викликається, коли відео закінчується

$("#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>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.