我在Android平板电脑上加载的页面上有一个视频元素。有一个带有以下事件监听器的自定义播放按钮:
play_button.addEventListener("click", function ()
{ video.play(); tap_to_play.innerHTML = '';
video.currentTime = offset;
console.log(video.currentTime); }, false);
第一次按下按钮时,会跳到不正确的时间。记录的currentTime将为100,即使视频似乎跳到大约1400.如果我在播放时再次按下按钮,或暂停并再次按下按钮,它将转到正确的时间。我怎样才能让它第一次跳到正确的位置?
答案 0 :(得分:1)
您可以使用“seekable”TimeRange对象来确定视频文件是否可以实际搜索到该位置 - 否则它将无效。这是一个简单的函数,如果所需的时间在范围内,则返回true
:
function isSeekable(video, time) {
if(video.seekable && video.seekable.length>0) {
for(var i=0, l=video.seekable.length; i<l; i++) {
if(time>video.seekable.start(i) && time<video.seekable.end(i))
return true;
}
}
return false;
}
查看下面的jsbin,了解适用于Android 4.1的示例。它也可能在3.1中工作,但你很难找到支持2.3或更低版本的解决方案:
http://jsbin.com/udovax/1/edit
(我有兴趣找到一个更好的事件来连接它 - 我使用的超时是一个快速和丑陋的黑客)