我目前正在将MediaElement.js用于我网站上的HTML5视频页面。
当用户离开页面/网站时,我保存视频的位置,以便当他们从中断的地方返回时。
我在浏览器中工作正常但是当我尝试使用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
答案 0 :(得分: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);