首页 文章

检测HTML5视频何时完成

提问于
浏览
215

如何检测HTML5 <video> 元素何时播放完毕?

6 回答

  • 259

    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 Audio and Video DOM Reference

  • 34

    您可以添加一个“已结束”的事件侦听器作为第一个参数

    像这样 :

    <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>
    
  • 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'行中,将'ended'替换为'pause'或'play'来捕获这些事件 .

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

    在"I want to roll my own controls"部分的Opera Dev网站上查看这篇Everything You Need to Know About HTML5 Video and Audio帖子 .

    这是相关部分:

    <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 media element (video/audio) events文档 .

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

相关问题