2011-11-06 20 views
3

我希望通过jQuery或Javascript检测HTML5标签内的特定视频是否已完全加载(我的意思是,下载到浏览器的缓存中)。该视频具有preload =“auto”属性。如何知道何时完成了一个<video></video>元素内的视频?

我试了一下我的力量做到这一点(我是一个初学者),没有运气。似乎无法找到任何我能听到的事件,有没有办法做到这一点?

PS:我遇到的唯一的事情就是视频对象的network_state属性,但是Web上的引用似乎并不符合它返回的状态,而当我尝试它时,我没有找到状态为“LOADED”。

编辑:我发现一个事件,我想我可以使用,canPlayThrough。我测试了它,它似乎工作,但我不知道它是否真的告诉我,视频已完全加载,或只是它载入足够的数据开始播放(这是不好的)。

+1

尝试一些回调:http://stackoverflow.com/questions/2954595/html5-video-callbacks/2954618#2954618并看到这个trhead太:http://stackoverflow.com/questions/2994680/accessing-html -5-video-progress-event-with-jquery – JMax

+0

非常感谢您的回复。使用回调似乎是一个好主意,但我似乎无法找到“加载”的apropiate回调。对不起,如果我错过了你提出的线索,我又是一个初学者。 – CCrawler

回答

4

您可以绑定到结束的事件:

$("video").bind(eventname, function() { 
    alert("I'm done!"); 
}); 

哪里事件名称是要列出来

事件的完整列表,该事件是在这里 - >http://dev.w3.org/html5/spec/Overview.html#mediaevents

更新:

要获得加载百分比,您可以使用2个事件的组合:

$("video").bind('durationchange', checkProgress); 
$("video").bind('progress', checkProgress); 

function updateSeekable() { 
    var percentageComplete = (100/(this.duration || 1) * 
    ($(this).seekable && $(this).seekable.length ? $(this).seekable.end : 0)) + '%'; 
} 
+0

感谢您的回复,但我仍然无法找到告诉我视频何时完全加载的事件。 我最近尝试过绑定canPlayThrough事件并使用SEEMS工作,但我不确定它是否告诉我它已经完全加载,或者它加载的数据足够多,不会中断播放(这是不好的,我需要知道视频完全加载)。 – CCrawler

+1

@CCrawler更新了我的答案 - 您可以使用durationchange和progress的组合 – ManseUK

相关问题