检查HTML5视频是否就绪

49

如果HTML5视频已准备好播放,是否会触发JavaScript事件?

5个回答

106

我刚看到这个问题,虽然它有点老了,但我还是为未来的读者(像我一样,可能来自Google)发布这个答案。

截至今天,以下是符合W3C标准的html5媒体事件列表:

  • onabort:在中止时运行的脚本。
  • oncanplay:当文件准备好开始播放(已缓冲足够的数据以开始播放)时运行的脚本。
  • oncanplaythrough:当文件可以连续播放而无需暂停缓冲时运行的脚本。
  • ondurationchange:当媒体长度发生更改时运行的脚本。
  • onemptied:在发生错误并且文件突然不可用(如意外断开连接)时运行的脚本。
  • onended:当媒体到达结尾时运行的脚本(对于像“感谢收听”这样的消息非常有用)。
  • onerror:在加载文件时出现错误时运行的脚本。
  • onloadeddata:在加载媒体数据时运行的脚本。
  • onloadedmetadata:在加载元数据(如尺寸和持续时间)时运行的脚本。
  • onloadstart:在任何实际加载内容之前,文件开始加载时运行的脚本。
  • onpause:当媒体被用户或程序暂停时运行的脚本。
  • onplay:当媒体准备好开始播放时运行的脚本。
  • onplaying:当媒体实际开始播放时运行的脚本。
  • onprogress:当浏览器正在获取媒体数据时运行的脚本。
  • onratechange : 当播放速率发生变化时运行的脚本(例如当用户切换到慢动作或快进模式时)
  • onreadystatechange : 当就绪状态(ready state)发生变化时运行的脚本(就绪状态跟踪媒体数据的状态)
  • onseeked : 当寻找属性被设置为false表示寻找已结束时运行的脚本
  • onseeking : 当寻找属性被设置为true表示寻找正在进行时运行的脚本
  • onstalled : 当浏览器由于某种原因无法获取媒体数据时运行的脚本
  • onsuspend : 当获取媒体数据在完全加载之前停止时运行的脚本,原因可能是任何原因
  • ontimeupdate : 当播放位置发生更改时(例如当用户快进到媒体的不同点时)运行的脚本
  • onvolumechange : 每次音量发生变化时运行的脚本(包括将音量设置为“静音”)
  • onwaiting : 当媒体已暂停但预计会恢复播放时(例如当媒体暂停以缓冲更多数据)运行的脚本。
  • Dantz正在寻找oncanplaythrough。


    7
    最新的列表在此处:http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#mediaevents。 - Dmitry Pashkevich

    21

    我理解"ready for playback"代表的是readyState属性等于HAVE_ENOUGH_DATA常量(数值为4)。根据文档所述,当readyState属性变成这个值时,应该触发canplay事件。


    1
    嗯,你确定吗?我认为与HAVE_ENOUGH_DATA相关的正确事件是'canplaythrough'。http://www.w3.org/TR/html5/embedded-content-0.html#event-media-canplaythrough - arxpoetica
    看起来这份草案自2011年以来已经发生了变化 :)。我同意你的观点,即当readyState转换为HAVE_ENOUGH_DATA时,事件被触发。 - Olivier Amblet
    根据我的经验,移动版Safari中的canplaythrough事件不够可靠。 - Stephen Tetreault
    1
    使用 $('#someid').on('canplay', function () { /* 你的代码 */ }); 进行jQuery访问。 - Roland

    6

    2

    当视频准备好播放时,您有两个事件需要处理。

    • canplay:当视频准备好播放但缓冲未完成时触发
    • canplaythrough:当视频准备好播放且缓冲完成时触发

    1

    2
    链接显示404页面未找到 - 这就是为什么不直接链接到可能的答案,而是在这里发布答案的原因。 - kontur
    你可以在这里找到类似的列表:https://developer.mozilla.org/zh-CN/docs/Web/Guide/Events/Media_events。 - Wex

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接