结束事件videojs无法正常工作

时间:2013-05-15 20:02:34

标签: javascript jquery html5-video

我希望在视频完成后触发一个简单的事件。我直接把它放在我的视频标签上。

     <script type="text/javascript">
        var myPlayer = videojs("session_video");
          videojs("session_video").ready(function(){
          this.addEvent("ended", function(){ 
            alert('Here I am');
          });
        });       
     </script>

但是我得到:TypeError:this.addEvent不是一个函数,我找不到原因。

你可以在这里看到它:78.47.121.50(stackoverflow不允许这个链接) 输入代码01-01-01-2012以显示视频。

任何见解都非常有用!

亲切的问候, 杰森。

5 个答案:

答案 0 :(得分:48)

“addEvent”和“removeEvent”被“on”和“off”替换

尝试:

this.on("ended", function(){ 

答案 1 :(得分:5)

对于那些在某些浏览器中仍然存在已结束事件问题的用户,您可以使用此修复程序:

    player.ready(function() {
            var myPlayer = this;

            playerInstance.on("timeupdate", function(event) { //chrome fix
                if (event.currentTarget.currentTime == event.currentTarget.duration) {
                    console.log('video ended');
                }
            });
    });

答案 2 :(得分:5)

如果最终用户故意搜索视频以结束视频暂停,则已结束事件将不会触发。我能够把它当作:

  <script type="text/javascript">
      var player = videojs('my_video', {}, function() {});
      player.ready(function(){
        var duration_time =  Math.floor(this.duration());
        this.on('timeupdate', function() {
          var current_time =  Math.floor(this.currentTime());
          if ( current_time > 0 && ( current_time == duration_time ) ){
            $('#continue_button').removeAttr("disabled");
          }
        });
      });
  </script>

答案 3 :(得分:2)

2020更新的答案:

let player = videojs('video-player-id');

player.on('ended', function() {
  this.dispose();
});

我认为最好将处置问题放在here

答案 4 :(得分:0)

在Stackoverflow上,我找到了解决方案的一部分,另一部分是从Lyn Headley的最佳答案中找到的。

<script type="text/javascript">
    //rename subtitle button
    videojs.addLanguage('de', {
        "captions off": "Untertitel aus",
    });

    videojs(document.querySelector('video') /* or selector string */, {
        techOrder: ['html5', 'flash'],
        controls: true,
        autoplay: false,
        preload: 'false',
        language: 'de',
        flash: {
            swf: 'video-js.swf'
        }
    }, function(){
        // Player (this) is initialized and ready.
        this.on('ended', function(){
            alert('ended');
        });
        this.on('firstplay', function(){
            alert('firstplay');
        });
    });
</script>

这将在视频结束时提醒您。 将它放在视频代码下 它应该有效。