【问题标题】:Slick-carousel - How To Pause and Play embedded Youtube videos on slide Change?Slick-carousel - 如何在幻灯片更改上暂停和播放嵌入的 Youtube 视频?
【发布时间】:2017-02-20 01:04:12
【问题描述】:

我想用 Youtube 视频创建一个 Slick 滑块,所以我可以直接使用 youtube iFrame 嵌入代码到幻灯片,它会工作,但我想要实现的是当幻灯片更改时,视频应该停止/暂停播放。

我正在使用 Slick Slider。

这是我正在使用的 HTML::

<div class="entry_slider_video">
     <div data-thumb="http://placehold.it/140x100">
     <iframe width="560" height="315" src="https://www.youtube.com/embed/gLJdzky63BA" frameborder="0" allowfullscreen></iframe>
     </div>
     <div data-thumb="http://placehold.it/140x100"><iframe width="420" height="315"  src="https://www.youtube.com/embed/Tf4sa0BVJVw?rel=0&amp;enablejsapi=1" frameborder="0" allowfullscreen></iframe>
     </div>
<div data-thumb="http://placehold.it/140x100">
    <iframe width="420" height="315"src="https://www.youtube.com/embed/QF903RaKLvs?rel=0&amp;enablejsapi=1" frameborder="0" allowfullscreen>
   </iframe>
  </div>

还有 JS:::

$('.entry_slider_video').slick({
              arrows: false,
              fade: true,
              autoplay: true,
              dots: true,
              customPaging : function(slider, i) {
                  var thumb = $(slider.$slides[i]).data('thumb');
                  return '<a class="enty_thumbs"><img src="'+thumb+'"></a>';
                }
 });

我知道我必须使用 Youtube API(https://developers.google.com/youtube/iframe_api_reference) 来实现这一点,我尝试了一些 SO 的解决方案,但没有运气。任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: jquery youtube slick.js youtube-iframe-api


    【解决方案1】:

    您应该使用 Slick 的 beforeChange 事件并将 postMessage 发送到 iframe 的 contentWindow。在代码中,这可能看起来像:

    $('.entry_slider_video').on('beforeChange', function(event, slick, currentSlide, nextSlide){
        var data = {"event":"command","func":"pauseVideo","args":""};
        var message = JSON.stringify(data);
        $("iframe", slick.$slides[currentSlide])[0].contentWindow.postMessage(message, '*');
    });
    

    不要忘记将参数enablejsapi=1 添加到视频的url。您示例中的第一个视频没有。

    【讨论】:

    • 有一个简单的问题......应用暂停否则停止
    • 您有两个选择: 1. 包含 Youtube Api 并监听 onStateChange 事件。 2. 像这个例子simplestexplanation.com/2014/04/… 一样收听postMessages。您必须跟踪每个视频及其状态。所以可能最好的方法是给每个 iframe 它自己的 id 并将其存储在关联数组 key = id 和 value = state 中。然后您应该能够在滑块的beforChange 事件中检查当前视频的状态。
    • 感谢您的宝贵意见,我会在这里尝试更新。
    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2021-02-08
    • 1970-01-01
    • 2012-07-02
    • 2019-12-06
    相关资源
    最近更新 更多