SlickJS Video Carousel暂停YouTube视频,并永久隐藏占位符图像

时间:2015-10-12 14:17:12

标签: javascript youtube-api carousel slick.js

这里是CodePen:http://codepen.io/frankDraws/pen/RWgBBw

概要 这是一个带有视频轮播的广告,使用SlickJS。

只有3个YouTube视频,但Slick有一个我们正在使用的infinite选项。

问题 1.我需要占位符img在点击时永久隐藏(包括克隆)。 2.我需要YouTube视频暂停滚动上一个/下一个(包括克隆)。 我也很乐意为此巩固最终的代码。

目前占位符在点击时消失,但滚动时会再次出现(取决于您点击的占位符以及滚动的方向)。

我的猜测是,在SlickJS的某处,它将图像放回原处。我不知道Slick在哪里这样做,也不知道如何覆盖它。

我一直在尝试多种方式,包括:

$("#c1").on('click',function(){
  $(this).html('<iframe id="video01" width="100%" height="100%" src="http://www.youtube.com/embed/c07DH4HY2CA?list=&amp;wmode=opaque&amp;rel=0&amp;modestbranding=0&amp;showinfo=0&amp;autoplay=1&amp;controls=0&enablejsapi=1" frameborder="0" allowfullscreen="" style="width:305px; outline: 5px solid #fff; background:#000; margin:0 0 0 4px; padding:0"></iframe>');
  $("#c1 > img").hide();
});

$("#c2").on('click',function(){
  $(this).html('<iframe id="video01" width="100%" height="100%" src="http://www.youtube.com/embed/1bdtSFxBYW0?list=&amp;wmode=opaque&amp;rel=0&amp;modestbranding=0&amp;showinfo=0&amp;autoplay=1&amp;controls=0&enablejsapi=1" frameborder="0" allowfullscreen="" style="width:305px; outline: 5px solid #fff; background:#000; margin:0 0 0 4px; padding:0"></iframe>');
  $("#c2 > img").hide();
});

$("#c3").on('click',function(){
  $(this).html('<iframe id="video01" width="100%" height="100%" src="http://www.youtube.com/embed/Js_Jv5EzOv0?list=&amp;wmode=opaque&amp;rel=0&amp;modestbranding=0&amp;showinfo=0&amp;autoplay=1&amp;controls=0&enablejsapi=1" frameborder="0" allowfullscreen="" style="width:305px; outline: 5px solid #fff; background:#000; margin:0 0 0 4px; padding:0"></iframe>');
  $("#c3 > img").hide();
});

$("#c3 > img").style.display = "none";只是为了让一对夫妇感到羞耻,但没有任何效果。

我提前感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

以下是快速编码笔,其中显示了YouTube IFrame API用于控制视频开始/暂停的一些用法:http://codepen.io/ccaspanello/pen/RWZqXb

var currentPlayer;

$('#c1').on('click',function(){
    var player = new YT.Player('c1', {
        width: '305',
        videoId: 'c07DH4HY2CA',
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });
    currentPlayer = player;
});

// Other Videos Here

function onPlayerReady(event) {
    event.target.playVideo();
}

function onPlayerStateChange(event){
    if (event.data == YT.PlayerState.PLAYING) {
        currentPlayer = event.target;
    }
}

请注意,生成视频的onclick操作可以合并到各种功能中。我没有花时间这样做。如果您需要帮助,我可以提供帮助;但是我可能要到今晚才能帮忙。

关于预览神秘回归。看起来SlickJS正在克隆内容,因此一旦用户点击轮播结束,它就可以“循环”它们。用户点击预览后生成YouTube视频;您可能需要触发事件来刷新克隆的对象。

答案 1 :(得分:1)

酷的问题解决。我从未玩过SlickJS,但从我正在阅读的内容来看,它对视频控件没有任何作用。为此,我建议您查看YouTube IFrame API(https://developers.google.com/youtube/iframe_api_reference)。单击下一个/上一个按钮时,可以调用player.pauseVideo()功能暂停视频。这也将清理JS中的HTML替换。

我接近解决方案;但我的电池正在死亡(%)。我明天早上会尝试完成。