2012-03-21 79 views
4

我目前在我的網站上使用MediaElement.js作爲HTML5視頻頁面。iPad的MediaElement.JS和setCurrentTime()

我保存視頻的位置,當用戶離開頁面/網站,以便他們返回時,他們離開了。

我在瀏覽器中正常工作,但是當我嘗試使用iPad時,我無法使用setCurrentTime()

我已經嘗試在播放事件中使用以下內容,而且loadedmetadata事件 在Chrome中都可以正常工作,但不是iPad。

player.addEventListener('loadedmetadata', function (e) { 
    if (savedPosition > 0) { 
     // Debug 
     console.log('[StartFrom]' + savedPosition); 

     // Set the start time from the relation in seconds 
     player.setCurrentTime(savedPosition); 

     // Debug 
     console.log('[CurrentPosition]' + player.currentTime); 

     // Set the video has played flag - so if paused and played it is not 
     // reset to start time 

     videoHasPlayed = true; 
    } 
}, false); 

有沒有人有任何聰明的想法如何幫助我解決這個請好嗎? https://github.com/johndyer/mediaelement/issues/243

回答

1

我已經找到了自己的問題的解決方案,經過各種研究,我已經將代碼移到timeupdate事件中,並且它在iPad和現在的桌面上都能正常工作。

確保您使用布爾值來停止進入瘋狂循環的邏輯。

//EVENT - When the video time has been updated 
    player.addEventListener('timeupdate', function (e) { 

     //If video has not been played AND savedPosition is greater than 0 
     if (!videoHasPlayed && savedPosition > 0) { 

      //Debug 
      console.log('[StartFrom - meta]' + savedPosition); 

      //Set the start time from the relation in seconds (MediaElement) 
      player.setCurrentTime(savedPosition); 

      //Debug 
      console.log('[CurrentPosition - meta]' + player.currentTime); 

      //Set the video has played flag 
      //Otherwise be continual loop of going back to this time 
      //This event gets called around every 250ms 
      videoHasPlayed = true; 
     } 
    }, false);