视频播放事件每秒触发数千次

时间:2016-05-30 10:07:43

标签: javascript jquery html5-video

我的页面onload函数中有以下jQuery代码:

$("#vid-pages").find("video").on('canplay', function() {
  $(this)[0].currentTime = $(this)[0].duration / 2;
  console.log($(this)[0].currentTime);
});

该容器中只有两个视频,而页面上没有任何其他视频。当我检查控制台时,它会不断充满该代码块中返回的时间。只触发一次这个触发器的解决方案是什么?而不是不断?

1 个答案:

答案 0 :(得分:2)

当前时间更改时,浏览器需要从缓存或网络加载更多数据。这可以触发canplay事件。由于在事件处理程序中设置了一个时间,您将获得一个永无止境的循环(通过选择视频,您可以看到canplay触发 here 的效果然后跳到中间右边)。它可能取决于浏览器。

MDN上的

This page 对相关的 canplaythrough 说明以下内容(尽管不完全相同,但相信这也适用于{{1} }如使用Firefox的媒体事件页面所示:

  

注意:手动设置currentTime最终会触发   firefox中的canplaythrough事件。其他浏览器可能不会解雇此问题   事件

要避免取消订阅该事件,要么使用标记,这会在第二次触发事件时强制退出。

canplay

对于取消订阅,您需要使用非匿名函数。