Flexslider 2 & YouTube API

0

Я использую Flexslider2 и добавил YouTubevideo к последнему слайду и подключил 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 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>
Теги:
youtube
flexslider

1 ответ

0

Первая проблема в этом заключалась в том, что для класса был выбран "слайдер" вместо "слайдов".

+ Изменить

    <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/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню