如果视频有道具自动播放,则在视口外时不要暂停

If video has prop autoplay don't pause when out of viewport

我使用 isinViewport 从 https://github.com/zeusdeux/isInViewport 到 play/pause 个视频,当 in/out 观看时。但有时我不希望它们自动播放(对于未静音且带有控件的视频)。

因此我正在检查是否在视口中并使用 属性 自动播放

jQuery(document).ready(function ($) {
    "use strict";
    
    /* activate pause for lightbulb video if scrolled out of viewport */
    $(window).scroll(function() {
        $('video').each(function(){
            if ($(this).is(":in-viewport()") && $(this).prop('autoplay')) {
                $(this)[0].play();
            } else {
                $(this)[0].pause();
            }
        });
    });
});

现在。这很好用。但是,我设置为自动播放的视频一旦滚动一下就会停止,这是不可取的行为。有没有办法说:否则,在支持自动播放的情况下,什么都不做?

也许我需要两个不同的 if 语句。如果使用 prop autoplay 什么都不做?否则如果播放,否则暂停?

感谢所有朝着正确方向提供的帮助

您可以在 video 选择器中包含一个属性选择器,以在从滚动更新逻辑加载页面时排除设置了 autoplay 的视频。

jQuery($ => {
  "use strict";
  let $videos = $('video:not([autoplay])');

  /* activate pause for lightbulb video if scrolled out of viewport */
  $(window).on('scroll', () => {
    $videos.each(function() {
      $(this).is(":in-viewport()") ? this.play() : this.pause();
    });
  });
});

请注意,我稍微修改了逻辑,这样您就可以避免在 scroll 事件处理程序中创建 jQuery 对象,这可能会消耗大量性能,并且在 [=14] 的情况下也是多余的=] 可以只替换为 this.