Я использую 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>
Первая проблема в этом заключалась в том, что для класса был выбран "слайдер" вместо "слайдов".
+ Изменить
<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/