2012-03-27 75 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聲明將工作。