【问题标题】:Flexslider 2 & YouTube APIFlexslider 2 和 YouTube API
【发布时间】:2014-05-30 09:34:06
【问题描述】:

我正在使用 Flexslider2,并在最后一张幻灯片中添加了一个 YouTube 视频并插入了 YouTube API。如果我播放视频后点击转到另一个滑块,视频会继续在后台播放 - 当我转到另一个滑块时如何让视频停止?

另外,如何让视频填满画面?我已将其设置为 100%,但目前它只填充了三分之一的区域。

这是我的代码 - 任何帮助都会很棒!

<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
    <meta content="charset=utf-8">
    <title>FlexSlider 2</title>
    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">

  <!-- Demo CSS -->
    <link rel="stylesheet" href="http://www.swimmingcover.co.uk/slider/css/demo.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="http://www.swimmingcover.co.uk/slider/css/flexslider.css" type="text/css" media="screen" />

    <!-- Modernizr -->
  <script src="http://www.swimmingcover.co.uk/slider/js/modernizr.js"></script>

</head>
<body class="loading">

<div id="main" style="width:30%; padding-top:40px;" role="main" >
<div id="slider" class="flexslider">
    <ul class="slides">
        <li><img src="http://www.swimmingcover.co.uk/slider/images/kitchen_adventurer_cheesecake_brownie.jpg" /></li>
        <li><img src="http://www.swimmingcover.co.uk/slider/images/kitchen_adventurer_lemon.jpg" /></li>
        <li><img src="http://www.swimmingcover.co.uk/slider/images/kitchen_adventurer_caramel.jpg" /></li>
        <li><iframe id="player" height="100%" src="http://www.youtube.com/embed/gDsj5UZ_1bA?rel=0" frameborder="0" allowfullscreen></iframe></li>
    </ul>
</div>
<div id="carousel" class="flexslider">
    <ul class="slides">
        <li><img src="http://www.swimmingcover.co.uk/slider/images/kitchen_adventurer_cheesecake_brownie.jpg" /></li>
        <li><img src="http://www.swimmingcover.co.uk/slider/images/kitchen_adventurer_lemon.jpg" /></li>
        <li><img src="http://www.swimmingcover.co.uk/slider/images/kitchen_adventurer_caramel.jpg" /></li>
        <li><img src="http://www.swimmingcover.co.uk/slider/images/kitchen_video.jpg" /></li>
    </ul>
</div>

</div>

  <!-- jQuery -->
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
  <script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.min.js">\x3C/script>')</script>

  <!-- FlexSlider -->
  <script defer src="http://www.swimmingcover.co.uk/slider/js/jquery.flexslider.js"></script>

<script>
      // 2. This code loads the IFrame Player API code asynchronously.
      var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }

      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.playVideo();
      }

      // 5. The API calls this function when the player's state changes.
      //    The function indicates that when playing a video (state=1),
      //    the player should play for six seconds and then stop.
      var done = false;
      function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
          setTimeout(stopVideo, 6000);
          done = true;
        }
      }
      function stopVideo() {
        player.stopVideo();
      }

    </script>

    <script type="text/javascript">
    $(function(){
      SyntaxHighlighter.all();
    });
    $(window).load(function(){
      $('#carousel').flexslider({
        animation: "slide",
        controlNav: false,
        animationLoop: false,
        slideshow: false,
        itemWidth: 90,
        itemMargin: 5,
        asNavFor: '#slider'
      });

      $('#slider').flexslider({
        animation: "slide",
        video: true,
        controlNav: false,
        animationLoop: false,
        slideshow: false,
        sync: "#carousel",
        start: function(slider){
          $('body').removeClass('loading');
        }
      });
    });
  </script>


  <!-- Syntax Highlighter -->
  <script type="text/javascript" src="http://www.swimmingcover.co.uk/slider/js/shCore.js"></script>
  <script type="text/javascript" src="http://www.swimmingcover.co.uk/slider/js/shBrushXml.js"></script>
  <script type="text/javascript" src="http://www.swimmingcover.co.uk/slider/js/shBrushJScript.js"></script>

  <!-- Optional FlexSlider Additions -->
  <script src="http://www.swimmingcover.co.uk/slider/js/jquery.easing.js"></script>
  <script src="http://www.swimmingcover.co.uk/slider/js/jquery.mousewheel.js"></script>
  <script defer src="http://www.swimmingcover.co.uk/slider/js/demo.js"></script>

</body>
</html>

【问题讨论】:

    标签: jquery api youtube flexslider


    【解决方案1】:

    第一个问题是这个类被设置为“slider”而不是“slides”。

    改变

        <li><iframe id="player" height="100%" src="http://www.youtube.com/embed/gDsj5UZ_1bA?rel=0" frameborder="0" allowfullscreen></iframe></li>
    

    到

       <iframe class="youtube" width="420" height="315" src="https://www.youtube.com/embed/gDsj5UZ_1bA" frameborder="0" allowfullscreen></iframe>
    

    这应该给出所需的大小。

    请参阅此示例了解如何停止播放器 https://gist.github.com/weissmike/6390241

    并在选择器隐藏时调用它。 http://api.jquery.com/hidden-selector/

    【讨论】:

      猜你喜欢
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-28
      • 2017-06-22
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 2015-11-24
      相关资源
      最近更新 更多