Javascript函数在视频时间更新时未触发

Javascript function not fired on video timeupdate

本文关键字:更新 时间 函数 视频 Javascript      更新时间:2023-09-26

目前正在处理包含视频的页面,该视频必须在某些点(如章节)暂停。所以我做了一个函数,当视频到达下一个"时间标记"时,它会停止它,看起来像这样:

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);进行测试)。

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

提前感谢您的任何建议!

该函数在 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的范围是什么,但您应该能够启动控制台日志记录并找出答案。