【问题标题】:How can I know when a video inside a <video></video> element has been entirely loaded?我如何知道 <video></video> 元素中的视频何时已完全加载?
【发布时间】:2011-11-06 16:01:22
【问题描述】:

我想通过 jQuery 或 Javascript 检测 html5 标签内的特定视频何时已完全加载(我的意思是,下载到浏览器的缓存中)。该视频具有 preload = "auto" 属性。

我竭尽全力做到这一点(我是初学者),但没有运气。似乎找不到任何我可以听的事件,有什么办法吗?

PS:我唯一遇到的是video对象的network_state属性,但是网上的引用似乎和它返回的状态不一致,我试了也没找到状态对于“加载”。

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

【问题讨论】:

标签: javascript jquery html html5-video


【解决方案1】:

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

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

其中 eventname 是您要列出的事件

完整的事件列表在这里 -> 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)) + '%';
}

【讨论】:

  • 感谢您的回复,但我仍然找不到告诉我视频何时完全加载的事件。我最近尝试绑定 canPlayThrough 事件,它似乎可以工作,但我不确定它是否告诉我它已经完全加载,或者它加载了足够的数据来播放而不会中断(这不好,我需要知道视频已完全加载)。
  • @CCrawler 更新了我的答案 - 您可以结合使用 durationchange 和 progress
猜你喜欢
  • 2015-11-17
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多