html5 listener loadeddata 不工作某些

新手上路,请多包涵

我很绝望。为什么这有效:

 var myVid=document.getElementById("movie");
myVid.onloadeddata=console.log("Browser has loaded the current frame");

这不会:

 myVid.addEventListener("loadeddata", function()  {
  alert("loadeddata");
  });

在 Firefox 27 中都尝试过。

她在我的页面上大喊大叫: www.x.opteynde.com

我的目标是获取视频的加载时间。

原文由 hamburger 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 530
1 个回答
var myVid = document.getElementById("movie");
myVid.onloadeddata = console.log("Browser has loaded the current frame");

这不符合您的预期。您没有将函数绑定到 myVid.onloadeddata ,而是立即执行 console.log() ,并将其返回值设置为 myVid.onloadeddata .

正确的方法是:

 myVid.onloadeddata = function() {
    console.log("Browser has loaded the current frame");
}

所以这可以解释为什么这会在您的控制台中输出一些东西。

关于 loadeddata

loadeddata 的定义 是:

用户代理可以第一次渲染当前播放位置的媒体数据。

用不太正式的话说,这意味着: “用户代理可以渲染至少一帧实际视频”

在我的 Firefox 错误控制台中,我看到了这些错误:

 Specified "type" attribute of "video/mp4" is not supported. Load of media resource fliege.mp4 failed.
HTTP load failed with status 404. Load of media resource http://www.x.opteynde.com/fliege.ogv failed.
All candidate resources failed to load. Media load paused.

显然,Firefox 无法从无法加载的视频中呈现帧,所以这个 404 似乎是你的问题。

聚苯乙烯

另请注意,在 此示例loadeddata 在您单击“播放”按钮之前不会被触发。

原文由 Martin Tournoij 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题