首页 > 解决方案 > 为什么 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

标签: javascriptjqueryhtml5-video

解决方案


您不应手动触发这些本机事件。只需使用:

$("video")[0].play()

或所有视频

$("video").each((i,el) => el.play());

或更好的自动播放属性

<video width="320" height="240" controls autoplay>

请注意,某些浏览器可能会在没有用户交互的情况下阻止自动播放。


推荐阅读