Javascript函数未在视频timeupdate上触发

时间:2016-03-03 10:53:51

标签: javascript html5-video

目前正在处理包含必须在某些点暂停的视频的页面(如章节)。所以我制作了一个功能,当视频点击下一个“时间标记”时会停止视频:

function vidPause(nextMarker){
  var timeMarker = nextMarker;

  if(videoPlayer.currentTime >= timeMarker) {
    videoPlayer.pause();
    videoPlayer.removeEventListener('timeupdate', vidPause());
  }
};

我正试图以这种方式解雇它:

videoPlayer.addEventListener('timeupdate', vidPause(nextMarker));

但只是在加载视频时才会触发。视频播放时没有任何反应(通过在vidPause函数中使用console.log(videoPlayer.currentTime);进行测试)。

注意:我需要以这种方式调用函数,以便我可以在它到达时间标记时删除事件监听器,这样当用户想要从该点开始播放视频时它就不会停止。 / p>

提前感谢任何建议!

1 个答案:

答案 0 :(得分:0)

该函数在addEventListener行中被调用一次,但实际上并没有将它作为回调传递。

试试这个:

function videoUpdate(e) {
  vidPause(nextMarker, videoPlayer.currentTime;); // Now call your function
}

function vidPause(nextMarker, timeStamp){
  var timeMarker = nextMarker;

  if (timeStamp >= timeMarker) {
    videoPlayer.pause();
    videoPlayer.removeEventListener('timeupdate', videoUpdate);
  }
};

videoPlayer.addEventListener('timeupdate', videoUpdate); // Note no brackets, as it's passing a ref to the function rather than calling it

我不知道nextMarker的范围是什么,但您应该能够启动控制台记录并查找。