javascript - Facebook 点赞视频自动播放和暂停

标签 javascript video iframe

在我的网站上有一个包含很多视频的页面。当 iframe 视频在视口(viewport)中完全可见时,视频应自动播放。当视频移动到视口(viewport)上方时,视频应该暂停,就像我们在 Facebook 中看到的那样。

注意:我使用的是 iframe,而不是 html5 视频元素。

最佳答案

虽然 SO 不是请求代码的地方,但我会回答这个问题,因为这是挑战,也是为了其他需要这个想法的人。

所以,我正在使用 jquery.inview用于检测 iframe 何时位于视口(viewport)中的插件。

此外,我正在使用 youtube api控制视频的 iframe。

解释每一行的工作原理并不容易,因此请阅读代码,如果您有任何问题,请发表评论。

这是完整的代码(由于安全原因,它不能在这个网站上工作,所以你可以在 http://output.jsbin.com/soqezo 中看到它)

// Inject YouTube API script
var tag = document.createElement('script');
tag.src = "//www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);


var players = [];
function onYouTubePlayerAPIReady() {
  $('iframe').each(function() {
    var ifr = $(this),
        player = new YT.Player(ifr[0].id);

    ifr.data('player', player);
    players.push(player);
  });

  initInView();
}

function pausePlayers() {
  for (var i in players) {
    players[i] && players[i].pauseVideo && players[i].pauseVideo();
  }
}

function initInView() {
  $('div').each(function() {
    $(this).on('inview', function(event, isInView) {
      if (isInView) {
        // element is now visible in the viewport
        pausePlayers();
        var player = $(this).find('iframe').data('player');
        if (player) {
          player.playVideo && player.playVideo();
        }
      } else {
        // element has gone out of viewport
        //$(this).find('iframe').data('player').pauseVideo();
      }
    });
  });
}
html, body, div {
  height:100%;
}

div {
  width:100%;
  height:100%;
  background:red;
  margin-bottom:100px;
}

iframe {
  width:100%;
  height:100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.inview/0.2/jquery.inview.min.js"></script>

<div>
    <iframe src="//www.youtube.com/embed/FKWwdQu6_ok?enablejsapi=1" frameborder="0" allowfullscreen id="video1"></iframe>
</div>
<div>
    <iframe src="//www.youtube.com/embed/FKWwdQu6_ok?enablejsapi=1" frameborder="0" allowfullscreen id="video2"></iframe>
</div>
<div>
    <iframe src="//www.youtube.com/embed/FKWwdQu6_ok?enablejsapi=1" frameborder="0" allowfullscreen id="video3"></iframe>
</div>
<div>
    <iframe src="//www.youtube.com/embed/FKWwdQu6_ok?enablejsapi=1" frameborder="0" allowfullscreen id="video4"></iframe>
</div>
<div>
    <iframe src="//www.youtube.com/embed/FKWwdQu6_ok?enablejsapi=1" frameborder="0" allowfullscreen id="video5"></iframe>
</div>

关于javascript - Facebook 点赞视频自动播放和暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35174828/

相关文章:

javascript - IE10 在文档打开后但在文档写入之前执行功能问题?

javascript - 尝试根据 asp 变量选择单选按钮

除非我使用 die(),否则 javascript 不会在 PHP 循环内执行

c++ - 高于 FullHD 分辨率的帧丢失。MediaFoundation 中是否提供 AVI 解压缩器转换过滤器?

google-chrome - 与 Firefox 相比, native Chrome 视频播放器呈现模糊不清的 mp4 视频

javascript - 如何在 Grapesjs 中添加 iframe?

javascript - 作用域的动态变量名

javascript - 自动搜索的ajax无法正常工作

video - 对于使用 ffmpeg 将 h.264 数据转换为 .mp4,我的数据包格式是否正确

javascript - 覆盖 iframe 内容 css