【问题标题】:Plyr.js with Fancybox 3, multiple videos not initializing带有 Fancybox 3 的 Plyr.js,多个视频未初始化
【发布时间】:2018-12-01 23:32:04
【问题描述】:

我正在尝试在灯箱中打开的同一页面上实现多个视频。我目前正在使用 Plyr.js,因为它可以对 html5、vimeo 和 youtube 视频进行皮肤处理,使其看起来都一样。我也在使用 Fancybox 作为灯箱。

当我添加一个视频时,似乎一切正常。但是,多个视频似乎没有在灯箱中初始化。我还注意到,如果我有一个 youtube 视频并将其排在列表的首位,它可以工作,但如果它跟随另一个视频,它将不会初始化。

因为我有多个实例,所以我使用的是 .player 类而不是 id。

我知道这是灯箱问题,因为如果我移除灯箱,所有视频都可以正常工作。所以可能我需要以某种方式调整灯箱如何初始化 Plyr.js

这是我的代码:

示例 HTML

<div class="container">
  <p><a href="#video1" data-fancybox>HTML5 Video</a></p>
  <div id="video1" class="lightbox">
    <video controls crossorigin playsinline class="player">
    <!-- Video files -->
      <source src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4" type="video/mp4">
    </video>
  </div>
  <p><a href="#video2" data-fancybox>Youtube Video</a></p>
  <div id="video2" class="lightbox">
    <div class="player" data-plyr-provider="youtube" data-plyr-embed-id="bTqVqk7FSmY"></div>
  </div>
  <p><a href="#video3" data-fancybox>HTML5 Video</a></p>
  <div id="video3" class="lightbox">
    <video controls crossorigin playsinline class="player">
    <!-- Video files -->
      <source src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4" type="video/mp4">
    </video>
  </div>

</div>

示例 JS:

$("[data-fancybox]").fancybox({
  beforeShow: function() {
    const player = new Plyr('.player', {});
  }
});

示例 CSS

.container {
  width: 600px;
  margin: 0 auto;
}

.lightbox {
  display: none;
  width: 600px;
}

.fancybox-content {
  padding: 0;
}

【问题讨论】:

    标签: jquery fancybox-3 plyr.js


    【解决方案1】:

    我知道这是灯箱问题

    如果灯箱工作正常,怎么可能是灯箱问题?我再说一遍 - 很好!

    多个视频似乎没有在灯箱中初始化

    再次,错误的假设。如果您检查#video2 元素,您会看到它是空的。为什么?我不是 Plyr 专家,但也许它不会初始化为隐藏元素。尝试将 beforeShow 更改为 afterShow 回调 - https://codepen.io/anon/pen/xQMmRV

    【讨论】:

    • 在您的示例中,视频 1 和视频 3 无法正常工作。他们正在播放但不是作为 Plyr.js 视频。您可以判断,因为它们不会自动调整大小并且没有 Plyr 控件。这是我遇到的麻烦,让他们都工作。
    • 当我说灯箱有问题时,并不是灯箱不工作,而是让玩家在灯箱内初始化。
    • 我再说一遍,灯箱显示空内容,因为......你的元素是空的。因此,您的问题根本与灯箱无关。在启动灯箱之前,使用开发人员工具检查页面上每个元素的内容。此外,视频未调整大小以正确适应的问题也是 Plyr 的问题。
    • 在您的示例中,HTML5 视频根本不是 Plyr 元素。它们不是由 Plyr 启动的,因此不会调整大小或使用 Plyr 的控件。你还没有提供一种方法来做你所说的。
    • 我试图解释灯箱按照您的要求执行。您创建了空元素,灯箱按原样显示它。如果您对 3rd 方脚本有疑问,那么您应该询问这个问题。
    猜你喜欢
    • 2021-12-14
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多