Приостановить видео на вкладке 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":""}', '*')
}
});
});