javascript - Safari 不能正确处理 html5 视频事件?
问题描述
我正在开发一个项目,该项目使用 cookie 来保存用户在 html5 视频上的进度,这样他们就可以在后续访问时从中断的地方继续。
问题是 HTML5 视频事件似乎都没有正确触发,仅在 Safari 上。所有其他浏览器都可以正常工作。
这是我正在使用的代码:
video.addEventListener('loadedmetadata', function() {
updateVideoProgress();
var interval = setInterval(function() {storeVideoProgress()}, 1000);
}, false);
if (video.readyState > 3) {
updateVideoProgress();
var interval = setInterval(function() {storeVideoProgress()}, 1000);
}
请注意,我正在听什么事件并不重要。我试过“loadeddata”、“canplay”、“canplaythrough”等,但它们都没有在 Safari 上触发。在所有其他浏览器上,所有这些事件都会触发(但取决于事件可能会损害我的代码的功能)。
TL:DR -- 有没有人经历过 Safari 没有触发 HTML5 视频事件,而所有其他浏览器都可以很好地处理它们?我能做些什么来解决这个问题?
解决方案
canplay
事件将适用于 chrome 和 firefox。我只是将loadedmetadat
其视为 iOS 特定canplay
事件,因为 iOS 似乎不会canplay
自行触发。
一旦我将我的canplay
逻辑复制到loadedmetadata
.
推荐阅读
- mysql - 用于 LOAD DATA LOCAL INFILE 的 MySQL 循环
- google-calendar-api - 向所有用户授予对谷歌日历的访问权限
- python - 在 Python 中使用大小数解析固定宽度的文件
- python - sys.getsizeof 用于字符串和列表(字符串)
- python - 为原始字符串中的子字符串查找字符串的第一个索引 l?
- c - 如何在 C 中发送差分 UART 信号
- reactjs - 我应该使用克隆道具还是一次性更改道具并使道具进入状态
- laravel - 在 Laravel Collectives 中分配值以选择
- android - 在仍使用 android.support.* 的主机应用程序中使用 AndroidX 依赖库
- spring-boot - 取消 @ComponentScan 时 RestTemplete 组件的依赖关系不满足