Приостановить видео на вкладке Bootstrap Изменить

Были заданы различные версии этого вопроса, но я не мог найти много, включающих несколько видео и вкладки Bootstrap.

Мне нужно, чтобы данный игрок сделал паузу, когда нажата другая вкладка.

 <div class="row">
            <div class="col-lg-12">
                <ul class="nav nav-tabs" role="tablist" id="myTab">
                    <li class="active"><a href="#tab1" role="tab" data-toggle="tab">Tab1</a></li>
                    <li><a href="#tab2" role="tab" data-toggle="tab">Tab2</a></li>
                    <li><a href="#tab3" role="tab" data-toggle="tab">Tab3</a></li>
                </ul>

                <div class="tab-content">
                    <div class="tab-pane fade in active" id="tab1">
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe id="video1" class="embed-responsive-item" src="//www.youtube.com/embed/7kq5f_apsuM?enablejsapi=1"></iframe>
                        </div>
                    </div>
                    <div class="tab-pane fade" id="tab2">
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe id="video2" class="embed-responsive-item" src="//www.youtube.com/embed/yWqG8ysc3BE?enablejsapi=1"></iframe>
                        </div>
                    </div>
                    <div class="tab-pane fade" id="tab3">
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe id="video3" class="embed-responsive-item" src="//www.youtube.com/embed/EVfGs78wD-c?enablejsapi=1"></iframe>
                        </div>
                    </div>
                </div>
            </div>
        </div>   

Вот jsFiddle: http://jsfiddle.net/o4eebLp4/

3 ответа

Я нашел это решение с помощью встроенных событий начальной загрузки. Это лучшее решение после долгого поиска пути без использования специального таргетинга на iframe или идентификаторы видео.

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  var iframe = $(e.relatedTarget.hash).find('iframe'); 
  var src = iframe.attr('src');
  iframe.attr('src', '');
  iframe.attr('src', src);
});

Если у вас есть одно или несколько видео на веб-странице, следующее работает, чтобы остановить видео при переходе на другую страницу. Это основано на ответе @fricks и отличном решении для закрытия видео в модальном виде @thekingoftruth выше.

$(function(){
  $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    var $iframes = $(e.relatedTarget.hash).find('iframe');
    $iframes.each(function(index, iframe){
      $(iframe).attr("src", $(iframe).attr("src"));
    });
  });
});

Вам нужен JavaScript:

$('#myTab a').click(function (e) {
var selected = $(this).parent().index();
$('#myTab a').each(function(index){
    if(index != selected){
        var iframe = $(".tab-content").children().eq(index).children().children().contents();
       iframe.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*')            
    }
});
});
Другие вопросы по тегам