在特定时间到达视频播放器时滚动

时间:2012-03-27 07:24:04

标签: javascript jquery pdf scroll html5-video

我正在开发一个页面,其中我必须显示带有相关pdf的视频。 我已经使用pdf.js和video.js项目分别阅读pdf和视频。 它们都在不同的div中实现。这是我的网页截图here的链接。我需要实现一个功能,检查视频当前时间并根据时间更改pdf div的位置 下面是我实施的代码,但它根本不起作用

//function to perform on every timeupdate
var myFunc =function(){
    var myPlayer = this;
    var whereYouAt = myPlayer.currentTime();
//working of function
switch(whereYouAt)
{
    case 30: bookmarkscroll('pageContainer2');
         break;
    case 60: bookmarkscroll('pageContainer3');
         break;
    case 90: bookmarkscroll('pageContainer4');
         break;
    case 120: bookmarkscroll('pageContainer5');
          break;
    case 150: bookmarkscroll('pageContainer6');
          break;
    case 180: bookmarkscroll('pageContainer7');
          break;

}

};
myPlayer.addEvent("timeupdate",myFunc);

3 个答案:

答案 0 :(得分:5)

由于timeupdate事件不关心漂亮的十进制数字,并且可能会在任何给定时间触发,甚至在 different intervals depending on your browser 时触发(因此返回{{1}之类的内容})您应该更改对12.56661(也是属性而不是方法 - 因此没有currentTime - 请参阅 this doc )返回的值的处理

这样的事情应该有效:

()

需要注意的另一点是,附加事件侦听器的方法称为 addEventListener ,而不是//select video player only once var myPlayer = document.getElementById('videoPlayer'); //function to perform on every timeupdate var myFunc =function(){ var whereYouAt = myPlayer.currentTime; if (whereYouAt > 30 && whereYouAt <= 60){ bookmarkscroll('pageContainer2'); } else if (whereYouAt > 60 && whereYouAt <= 90){ bookmarkscroll('pageContainer3'); } else if .... //and so on } myPlayer.addEventListener('timeupdate',myFunc,false);

答案 1 :(得分:0)

那是因为timeupdate通常不是1,2,3,4,它有点像1.02302350,1.12412312。所以你切换案件永远不会得到合适的时间。尝试使用像

这样的intervalls
this.currentPageContainer; //save your current container


if( whereYouAt > 30 && whereYouAt < 60 ){
  var scrollTo = 'pageContainer2';
  if( this.currentPageContainer == scrollTo ) return;  //break, if already scrolled

  bookmarkscroll('pageContainer2');
  this.currentPageContainer = scrollTo;
}
else if( whereYouAt > 60 && whereYouAt < 90  ) ...

不知道你是否真的需要休息,因为我不知道你的滑动功能。最好的

答案 2 :(得分:0)

Math.floor上使用currentTime,如此:

var whereYouAt = Math.floor(myPlayer.currentTime);

这将返回integer,您的switch语句将有效。