Chrome 33.0.1750.154 中的 HTML5/Javascript 视频事件行为
HTML5/Javascript Video Event Behaviour In Chrome 33.0.1750.154
我有一个video
元素,我用javascript
动态控制。它一直工作得很好。今天我注意到一些奇怪的事情。
我附加了以下事件侦听器。
function registerListeners(listen) {
listen.addEventListener('canplaythrough', canStartPlayback);
listen.addEventListener('ended', onFinish);
listen.addEventListener('loadeddata', onLoadComplete);
listen.addEventListener('playing', onPlay);
listen.addEventListener('error', mediaError);
}
canStartPlayback
onFinish
和onPlay
的代码如下。
function canStartPlayback() {
if (!playing) {
playing = true;
$('.module-content-video-loader').stopSpin();
$('.module-content-video-loader').hide();
media.play();
}
}
function onFinish() {
if (playing) {
playing = false;
media.pause();
media.currentTime = 0.0;
}
}
function onPlay() {
playing = true;
if (!pending) {
$('#skip').show();
}
}
现在,我目前发现onFinish
完成后,我立即看到canStartPlayback
再次被解雇。
这是对Mozilla canplaythrough
的描述
canplaythrough
当就绪状态更改为CAN_PLAY_THROUGH时发送,表示假设下载速率至少保持在当前水平,则可以不间断地播放整个媒体。注意:手动设置currentTime
最终会在 Firefox 中触发canplaythrough
事件。其他浏览器可能不会触发此事件。
我的印象是,一直看到canplaythrough
只被解雇一次。chrome最近是否更改了这一点,是否有其他人发现这种情况正在发生?
canplaythrough
事件(如canplay
)在readyState
属性更改时触发。这些事件和属性反映了浏览器能够从当前位置播放的视频量。因此,如果您寻求未缓冲的新位置,浏览器将无法再从当前位置播放,因此readyState
必须下降到HAVE_METADATA
。一旦加载了新部分,readyState
最终会回到HAVE_ENOUGH_DATA
,并且事件将再次触发。
从 2009 年开始修复,Chrome 模仿了 Firefox 的行为,即每次搜索时都将readyState
降低到 HAVE_METADATA
,即使视频已完全缓冲。据推测,这是因为即使视频是从网络加载的,将该部分加载回内存并显示当前帧仍然需要时间。
如果需要确保事件只处理一次,可以保持更详细的状态,也可以在侦听器首次运行后将其删除,如下所示:
media.removeEventListener('canplaythrough', canStartPlayback);
下面是一个示例,该示例触发了一堆此类事件并将其记录到控制台,以便在查找时可以看到它们的运行情况:http://jsbin.com/buparoye/1/edit
- 播放当前视频时如何停止其他视频?JavaScript
- Javascript-在视频中跟踪鼠标位置
- 如何在javascript中解析Dailymotion视频Url
- 使用javascript将视频从我的android应用程序上传到youtube
- 在javascript中添加和显示对象的随机数组中的视频
- javascript从任何嵌入式flash视频中发现.flvurl
- 使用HTML5播放器时使用Javascript更改Youtube视频
- Javascript的视频音量问题
- 使用情感API视频(Javascript或Ruby)
- html视频javascript播放方法在移动Safari中不起作用
- 播放暂停 HTML5 视频 JavaScript
- Facebook图形API只返回发布的照片而不返回视频(Javascript)
- 无法收听twilio视频javascript端点
- HTML5视频javascript控件-重启视频
- YouTube视频JavaScript停止工作,如果放入dom ready函数
- 设置Apple TV视频JavaScript
- 嵌入视频javascript代码从数据库在PHP
- 如何修复HTML5视频Javascript跟踪代码不正常工作
- html5视频-Javascript-内部有暂停的循环
- 无法继续使用Twilio可编程视频Javascript