作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用以下代码来分离视频事件:
var HTML5VideoEvents = ["playing","pause","ended","seeked"];
var videos = win.document.getElementsByTagName("video");
for (var i = 0; i < videos.length; i++){
for (var j = 0; j < HTML5VideoEvents.length; j++){
videos[i].addEventListener(HTML5Events[j], videoEvenDetected, false);
}
}
该代码在正常情况下可以正常工作,并且我可以获取所有事件,但是当播放不同的视频而无需重新加载页面时,例如如果我正在观看一个Youtube视频,并且单击右侧栏列表中的任何其他视频,或者单击Amazon Prime中的另一个视频。在这两种情况下,接收下一个视频的“播放”事件以及与下一个视频的curSRC,URL等有关的信息。
videos[i].addEventListener("emptied", detectVideoReset, false);
但是上面的代码并不总是有效。在Firefox和Safari上,在检测到上一个视频的重置事件之前,先观察下一个视频的事件。另外,我还需要有关上一个视频当前时间,URL,curSRC,下一个视频开始之前的持续时间的信息。
最佳答案
我建议您看看媒体元素的加载算法,该算法指定了触发媒体事件的顺序。正如您所指出的,emptied
事件在重置currentTime
和其他变量之后触发...。这是有道理的,但是对于您的用例来说是不幸的。
https://www.w3.org/TR/2011/WD-html5-20110113/video.html#media-element-load-algorithm
您可以只记录ended
事件吗?如果事件已被触发,则将视频标记为ENDED。否则,假设它已被挂起。您还可以在每次视频暂停时记录currentTime和src-然后在触发emptied
后使用这些值。
我很想知道您是否找到更优雅的解决方案...
关于javascript - 视频更改而无需重新加载页面时,HTML5视频元素缺少END事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377562/
我是一名优秀的程序员,十分优秀!