Скрыть / показать в JavaScript - прекратить воспроизведение видео с YouTube
Я использовал функцию iframe для встраивания видео, и я скрываю / показываю контент и видео через JavaScript.
У меня есть одна проблема. Когда я нажимаю кнопку воспроизведения на первом видео, а затем нажимаю на следующее, не останавливая первое, первое продолжает просто воспроизводиться.
Что я могу сделать, чтобы остановить видео в "фоне", при показе нового контента?
$(function(){
$("#link1").click(show1);
});
function show1(){
$("#pic1").fadeIn();
$("#pic2").hide();
}
Я просто использую эту простую функцию JavaScript, где id "pic1" и "pic2" - это идентификатор div, в который встроено видео.
Я просто не могу заставить это работать. Я попытался удалить, но вы не можете увидеть видео снова, если хотите.
1 ответ
Это реализация API проигрывателя YouTube, без загрузки дополнительных файлов. Чтобы получить эту работу, вы должны суффикс всех ваших <iframe>
"s src
приписать с ?enablejsapi=1
,
Пример (я разбил код на несколько строк для удобства чтения, вы можете спокойно пропустить перевод строки):
<div id="pic3">
<iframe width="640" height="390"
src="http://www.youtube.com/embed/Xub4grFLbQM?enablejsapi=1"
frameborder="0" allowfullscreen></iframe>
</div>
<div id="tS2" class="jThumbnailScroller">
.. Removed your code for readability....
<a href="#vid3" id="link3"><img src="images/thumbs/player2.jpg" height="85"/></a>
....
Код JavaScript + jQuery:
$(function() {
/* elt: Optionally, a HTMLIFrameElement. This frame's video will be played,
* if possible. Other videos will be paused*/
function playVideoAndPauseOthers(frame) {
$('iframe[src*="http://www.youtube.com/embed/"]').each(function(i) {
var func = this === frame ? 'playVideo' : 'pauseVideo';
this.contentWindow.postMessage('{"event":"command","func":"' + func + '","args":""}', '*');
});
}
$('#tS2 a[href^="#vid"]').click(function() {
var frameId = /#vid(\d+)/.exec($(this).attr('href'));
if (frameId !== null) {
frameId = frameId[1]; // Get frameId
playVideoAndPauseOthers($('#pic' + frameId + ' iframe')[0]);
}
});
});