检测HTML5视频何时完成

Bre*_*ent 239 html5 html5-video

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

小智 289

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

像这样 :

<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>
Run Code Online (Sandbox Code Playgroud)

  • 为什么要检查e是否存在? (10认同)
  • 这是唯一一个在整个互联网上工作的视频."on end"活动.好样的! (7认同)
  • @AllanStepps从我可以收集到的,`if(!e){e = window.event; 声明这个答案最初包含的是IE特定的代码,用于从早期版本的IE上附带`attachEvent`的事件处理程序中获取最新事件.因为在这种情况下,处理程序附加了`addEventListener`(IE的早期版本与处理HTML5视频的人无关),完全没有必要,我已将其删除. (3认同)
  • 使用此方法时需要注意的一点是,OS X(10.11)的El Capitan版本上的Safari没有捕获"已结束"事件.所以在这种情况下,我需要使用'timeupdate'事件,然后检查this.current Time何时再次等于0. (3认同)
  • 还要记住将loop设置为false,否则不会触发已结束的事件。 (3认同)

Ala*_*tts 133

在Opera Dev站点的"我想滚动我自己的控件"部分下看看你需要知道的关于HTML5视频和音频的所有内容.

这是相关部分:

<video src="video.ogv">
     video not supported
</video>
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

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

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

onended是所有媒体元素上的HTML5标准事件,请参阅HTML5媒体元素(视频/音频)事件文档.

  • @AlastairPitts这在Chrome上无效.Darkroro的答案是我使用Chrome的唯一方法.这仍然适用于Firefox. (5认同)
  • 我试图以完全相同的方式捕捉"已结束"事件,正如您所呈现的那样,但此事件未触发.我在Safari 5.0.4下(6533.20.27) (2认同)

d1j*_*i1b 35

JQUERY

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

HTML

<video id="video1" width="420">
  <source src="path/filename.mp4" type="video/mp4">
  Your browser does not support HTML5 video.
</video>
Run Code Online (Sandbox Code Playgroud)

事件类型HTML音频和视频DOM参考

  • -1.自从2011年发布的jQuery 1.7以来,`.()`首选`.bind()`.另外,请正确格式化你的代码. (11认同)

小智 7

这是一个在视频结束时触发的简单方法。

<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> 
Run Code Online (Sandbox Code Playgroud)

在“EventListener”行中,将“结束”一词替换为“暂停”或“播放”以捕获这些事件。


小智 6

您可以简单地添加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>
Run Code Online (Sandbox Code Playgroud)