代码之家  ›  专栏  ›  技术社区  ›  jinfy

在视窗中可见时不播放视频?

  •  0
  • jinfy  · 技术社区  · 6 年前

    当视频在视图端口上部分可见时,我尝试自动播放,就像视频完全隐藏时一样,我希望停止播放。到目前为止,它的工作只能在窗口滚动。

    所以下面的代码不能正常工作:-

    videojs("myPlayerID").ready(function() {
      var myPlayer = this;
    
      window.onscroll = checkIfVideoInView;
    
      function checkIfVideoInView() {
        if (isScrolledIntoView(myPlayerID)) {
          myPlayer.play();
        } else {
          myPlayer.pause();
        }
      }
    
      function isScrolledIntoView(elem) {
        var docViewTop = $(window).scrollTop();
        var docViewBottom = docViewTop + $(window).height();
    
        var elemTop = $(elem).offset().top;
        var elemBottom = elemTop + $(elem).height();
    
        return (
          elemBottom > docViewTop &&
          elemTop < docViewBottom
        );
      } 
    });
    

    代码笔URL:-

    https://codepen.io/burner/pen/bxbzmR

    1 回复  |  直到 6 年前
        1
  •  2
  •   The AOS    6 年前

    window.onload = checkIfVideoInView 它将尝试开始加载播放。有些浏览器,如Chrome,要求用户在播放带有声音的视频之前与文档进行交互。这意味着要使autoplay在所有情况下都工作,还需要添加 muted 属性设置为视频html标记。

      <video id="myPlayerID" muted ...></video>
    

    https://codepen.io/theaos/pen/BOBggq