javascript - 为什么不
问题描述
为什么在加载页面后首次开始播放具有自动播放功能的视频时不会触发播放事件?
document.getElementById("vid").addEventListener('play', function, false);
<video id="vid" src="video.mp4" type="video/mp4" autoplay></video>
它应该触发我认为的播放事件,但不会。
这是设计使然吗?如果是这样,为什么?
手动按播放正常。
解决方案
对于未来的用户,这可能是由于视频开始自动播放和添加事件处理程序之间的竞争条件造成的。
如果在视频已经开始播放之后添加处理程序,播放事件将不会触发。当在页面底部添加脚本并且上面的视频元素设置为自动播放时,可能会发生这种情况。
请参阅下面的片段:
// add the handler after 500ms which assumes the video is already playing
setTimeout(() => {
document.querySelector('#vid').addEventListener('play', (e) => {
console.info('playing');
});;
}, 500);
// this will fire as expected
// document.querySelector('#vid').addEventListener('play', (e) => {
// console.info('playing');
// });;
<video height="100px" id="vid" src="https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4" type="video/mp4" autoplay controls></video>
推荐阅读
- mysql - MYSQL:停止 IFNULL 返回 null 的“空”行
- python - 在没有原型和标头的情况下,如何在 Python 中查找嵌入对象的数据类型
- reactjs - 从 React-Table 中的一行获取信息/数据/值
- python - 为 plotly 的 Figure show 方法定义全局配置值
- c++ - 为什么在使用 FFTW 将(2d)IDFT 转换为 DFT 时,频域中的数据会“镜像”?
- service - 使用 PATCH 方法更新 SAP BUSINESS ONE 服务层上的 salesOrderLines 时出现问题
- html - 使用悬停图像更改制作一排图像的更清洁方法?
- google-apps-script - Google 脚本无法写入/读取 Google 工作表并为 getValue() 提供错误“异常:输入数字”
- python - 使用 Pandas 数据框聚合后无法对值进行排序
- python-3.x - 根据 Python 中的名称将文件从特定子目录移动到另一个子目录