javascript - 为什么 jquery video.trigger("play") 触发两次?
问题描述
我有一个 html5 视频元素,我想在页面加载时播放。每次播放视频后,我想为不同的东西添加更多代码。
由于某种原因,.trigger("play")使视频播放两次。如果我暂停它并从 html 控件再次播放它会播放一次。我不明白为什么初始触发器会使视频播放两次。我只需要它运行一次。
html:
<video width="320" height="240" controls >
<source src="http://techslides.com/demos/sample-videos/small.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
jQuery:
var triggerCount = 0;
$("video").on("play", function () {
console.log(++triggerCount);
//do more stuff here
})
$("video").trigger("play");
代码示例:jsFiddle
解决方案
您不应手动触发这些本机事件。只需使用:
$("video")[0].play()
或所有视频
$("video").each((i,el) => el.play());
或更好的自动播放属性
<video width="320" height="240" controls autoplay>
请注意,某些浏览器可能会在没有用户交互的情况下阻止自动播放。
推荐阅读
- java - 在 Java 中输出星号三角形的更简单方法:
- typescript - typescript 接口提供什么样的类型和成员保证?
- machine-learning - spacy_sklearn 和 tensorflow_embedding 管道之间的区别
- r - RPostgres 中是否有一个函数可以为 Postgres 中的表创建/识别主键?
- angular - 每个项目的角度计算
- javascript - ionic:如何将数组的索引传递给方法 getActiveIndex()?
- javascript - 将附加变量附加到 formData
- python - 将 MultiIndex Pandas 数据帧乘以来自另一个数据帧的多个标量
- lua - 卢阿 | 仅表参数的白名单
- python - Matplotlib 垂直和水平中心绘图