我正在弄乱HTML5视频和自定义控件,并且希望使用waiting事件来理想地显示正在加载的图像,但是现在只写控制台即可。
等待事件
我在这里设置了一个示例-> http://jsbin.com/uvipev/2/edit#javascript,html,live
这是视频代码减去控件:
<video controls preload="meta">
<source src="http://www.tools4movies.com/dvd_catalyst_profile_samples/The%20Amazing%20Spiderman%20tablet.mp4" />
This is video fallback
</video>
这是等待事件的事件监听器。
var video = document.getElementsByTagName('video')[0];
video.addEventListener('waiting', function() {
console.log('waiting');
}, false);
谁能看到为什么它没有运行?等待事件听起来像我所需要的。
最佳答案
您是否想在视频第一次缓冲时显示等待的图像?如果是这样,您可能就没有在寻找waiting
。
看一下这个演示:http://www.w3.org/2010/05/video/mediaevents.html
如果在没有任何预加载的情况下调用play()
,即使在缓存的副本上,也应该会看到waiting
触发。如果在load()
之前调用play()
,则可能永远看不到waiting
触发,因为下一帧始终可用。
最好的过程是显示图像,调用load()
,然后侦听canplay
或canplaythrough
。此时,隐藏您的图像并开始play()
。
更新
观看此小提琴中的视频:http://jsfiddle.net/bnickel/zE8F3/在视频冻结后不久,Chrome不会发送waiting
事件,而是发送stalled
事件。您可能需要检查所支持的每种浏览器的工作方式。请记住,像VideoJS这样的播放器很大(〜142KB),因为它们处理了很多浏览器不一致问题。
关于javascript - HTML5视频-等待事件未触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11403202/