我正在开发一个页面,其中我必须显示带有相关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);
答案 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。所以你切换案件永远不会得到合适的时间。尝试使用像
这样的intervallsthis.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
语句将有效。