2012-03-27 77 views
1

我正在开发一个页面,在该页面中必须显示其相关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); 
它不工作

回答

4

由于timeupdate事件不会在乎好看的十进制数和可能触发在任何给定的时间,甚至在different intervals depending on your browser(因此返回类似12.56661),你应该改变的价值你处理的是currentTime(其也是财产而不是方法 - 因此没有() - 见this doc)返回。

像这样的东西应该工作:

//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); 

另外一点需要注意的是,安装事件侦听器的方法被称为addEventListener,而不是addEvent

+0

它不滚动可能是因为PDF和视频的所有代码都在不同的div – hiteshtr 2012-03-27 09:50:05

+0

@hiteshtr如果视频事件行为正常,滚动不起作用,那么为什么你不试图打破它,并要求一个新的关于这个问题的问题?在你调用'bookmarkscroll'之前,也要做一些简单的事情,例如'console.log('试着去书签标签');'然后调用函数。 – m90 2012-03-27 09:52:37

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 ) ... 

不要知道如果你真的需要休息,因为我不知道你的scrollfunction。最好升

0

使用Math.floorcurrentTime像这样:

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

这将返回一个integer和您的switch声明将工作。