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が存在するかどうかを確認するのはなぜですか?
Allan Stepps

3
@AllanStepps私が収集できることからif(!e) { e = window.event; }、この回答に最初に含まれていたステートメントは、IEのattachEvent初期バージョンに添付されたイベントハンドラー内から最新のイベントを取得するためのIE固有のコードです。この場合、ハンドラーが添付されているaddEventListener(そして、それらの初期のバージョンのIEはHTML5ビデオを扱う人々には関係がない)ので、それは完全に不要であり、私はそれを削除しました。
マークアメリー2015

3
この方法を使用する際の注意点の1つは、OS X(10.11)のEl CapitanバージョンのSafariが「終了」イベントをキャッチしないことです。したがって、その場合は、「timeupdate」イベントを使用して、this.current Timeが再び0になったことを確認する必要がありました。
Cam

2
また、ループをfalseに設定することを忘れないでください。そうしないと、終了したイベントはトリガーされません。
イスラエルモラレス

134

これを見ていHTML5ビデオとオーディオについて知っているすべてはあなたの必要性「私は自分のコントロールをロールする」セクションの下でオペラの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:問題が発生した場合は、これを新しい質問として投稿します。
Alastair Pitts

@すべて:次のように行うこともできます。<video class = "video_player" id = "video" poster = "images / video-pc.jpg" tabindex = "0" height = "100%" onended = "myHandler()">
VendettaDroid

5
@AlastairPittsこれはChromeでは無効です。Darkroroの答えは、Chromeで動作させる唯一の方法です。これはFirefoxでも動作しました。
ジェフ

デッドリンク。w3schools.com/tags/ref_eventattributes.asp =>メディアイベント
Aurelien

36

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>

イベントタイプHTMLオーディオおよびビデオDOMリファレンス


11
-1。2011年にリリースされたjQuery 1.7以降に.on()推奨されてい.bind()ます。また、コードを適切にフォーマットしてください。
Mark Amery

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

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, timeupdateended関数が呼び出される場所を含むすべてのビデオイベントにリスナーを追加できます

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.