【问题标题】:Multiple Vimeo videos with FlexSlider JS使用 FlexSlider JS 的多个 Vimeo 视频
【发布时间】:2012-08-11 23:02:27
【问题描述】:

我希望有人可以提供帮助。我已经搜索并搜索了一个解决方案,并且我已经使用了 Javascript,但它只是超出了我的范围。我希望其他人能理解这一点。

FlexSlider 作为旋转木马做得很好,但如果你想要多个视频,我无法让它们停止 FlexSlider 动画,或者在用户触发下一个旋转木马幻灯片时自动停止播放。

用一个很容易做到。以下 Javascript 显示了这是如何完成的。但正如您所见,它依赖于具有 ID 的元素。问题是我的视频数量未知。有时可能有一个。有时可能有 20 个。

如果有什么方法可以修改下面的代码,让它可以处理任意数量的视频?

var player = document.getElementById('player_1');

$f(player).addEvent('ready', ready);

function addEvent(element, eventName, callback) {
    if (element.addEventListener) {
        element.addEventListener(eventName, callback, false)
    } else {
        element.attachEvent(eventName, callback, false);
    }
}

function ready(player_id) {
    var froogaloop = $f(player_id);
    froogaloop.addEvent('play', function(data) {
        $('.flexslider').flexslider("pause");
    });
    froogaloop.addEvent('pause', function(data) {
        $('.flexslider').flexslider("play");
    });
}    

$(".flexslider").flexslider({
    animation: "slide",
    animationSpeed: Modernizr.touch ? 600 : 1000,
    slideshowSpeed: 3500,
    controlsContainer: "#carousel",
    useCSS: false,
    start: function(){
        $(".flex-control-nav").css("margin-left", "-" + $(".flex-control-nav").width()/2 + "px");
    },
    before: function(slider){
        $f(player).api('pause');
    }
});

PHP/HTML 如下所示:

<div class="flexslider">
    <ul class="slides">
    <?php  for($i=0;$i<$slideCount;$i++) { ?>
        <li>
            <?php if($slides[$i]["type"] == "1") { ?>
                <div class="video">
                    <iframe id="player_1" width="1000" height="500" frameborder="0" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen src="http://player.vimeo.com/video/<?php echo $slides[$i]["URL"]; ?>?api=1&player_id=player_1"></iframe>
                </div>
            <?php } else { ?>
                <a href="explore.php?item=<?php echo $slides[$i]["slideID"]; ?>">
                <img src="static/images/slides/<?php echo $slides[$i]["slideID"]; ?>/<?php echo $slides[$i]["URL"]; ?>" alt="<?php echo htmlspecialchars($slides[$i]["headline"], ENT_QUOTES, "UTF-8"); ?>" width="868" height="488"  /></a>
            <?php } ?>
<       /li>
    </ul>
</div>

可能的解决方案: 运行 FOR 循环并计算视频的数量,然后在 Javascript 中创建多个不同的 $f(player) 实例。有没有更好的办法?

【问题讨论】:

  • 我即将踏上类似的旅程。现在是 3-4 个月后有什么答案吗?
  • 遗憾的是没有。我想我们最终改变了它。问题是给每个视频自己的参考。如果您知道您将拥有多少个视频,这很简单!

标签: php javascript vimeo flexslider froogaloop


【解决方案1】:

我知道你说你已经继续前进,但我很难让所有视频在转到下一张幻灯片时能够自动暂停,我从 Juanfra Aldasoro (http://juanfra.me/2012/08/flexslider-multiple-videos-v2/) 发现了这段代码为每个视频创建必要的 jQuery,然后我相信剩下要做的就是计算和命名 iframe id。这是他的代码:

jQuery(window).load(function() { 
    var vimeoPlayers = jQuery('.flexslider').find('iframe'), player;        

    for (var i = 0, length = vimeoPlayers.length; i < length; i++) {            
            player = vimeoPlayers[i];           
            $f(player).addEvent('ready', ready);        
    }       

    function addEvent(element, eventName, callback) {           
        if (element.addEventListener) {                 
            element.addEventListener(eventName, callback, false)            
        } else {                
            element.attachEvent(eventName, callback, false);            
        }       
    }       

    function ready(player_id) {             
        var froogaloop = $f(player_id);             
        froogaloop.addEvent('play', function(data) {                
            jQuery('.flexslider').flexslider("pause");          
        });             
        froogaloop.addEvent('pause', function(data) {               
            jQuery('.flexslider').flexslider("play");           
        });         
    }  

    jQuery(".flexslider")     
    .flexslider({       
        animation: "slide",
        useCSS: false,       
        animationLoop: false,       
        smoothHeight: true,       
        before: function(slider){         
            if (slider.slides.eq(slider.currentSlide).find('iframe').length !== 0)
                  $f( slider.slides.eq(slider.currentSlide).find('iframe').attr('id') ).api('pause');       
        }   
    });

});

希望这有助于有人登陆这里:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2013-03-22
    相关资源
    最近更新 更多