15

Я использовал функцию iframe для встраивания видео, и я скрываю/показываю контент и видео через JavaScript.Скрыть/показать в JavaScript - остановить воспроизведение YouTube iframe video

У меня есть проблема. Когда я нажимаю воспроизведение на первом видео, а затем нажимаю на следующий, не останавливая первый, первый продолжает играть.

Что можно сделать, чтобы остановить видео в «фоновом режиме» при показе нового контента?

$(function(){ 
    $("#link1").click(show1); 
}); 

function show1(){ 
    $("#pic1").fadeIn(); 
    $("#pic2").hide(); 
} 

Я просто использую эту простую функцию JavaScript, где «pic1» и «pic2» идентификатор идентификатор DIV, видео встроены в систему.

Я просто не могу показаться

чтобы он работал. Я попытался удалить, но потом вы не сможете увидеть видео снова, если хотите.

+0

возможно дубликат [видео выиграло» t прекратить, когда div скрыт] (http://stackoverflow.com/questions/8667882/video-wont-stop-when-div-is-hidden) –

+0

См. http://stackoverflow.com/questions/1094397/how -can-i-stop-a-video-with-javascript-in-youtube – xbonez

+1

@xbonez Ваш вопрос не о ** обрамлении ** youtube video , –

ответ

27

Это реализация API-интерфейса проигрывателя YouTube без загрузки дополнительных файлов. Чтобы получить эту работу, вы должны суффиксом всего вашего с атрибутом 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]); 
     } 
    }); 
}); 
+0

Ты потрясающий! СПАСИБО :-D –

+0

Это не похоже, больше работают, я получаю эту ошибку: «Заблокирован кадр с источником» http://www.mywebsite.com »от доступа к кадру с источником« http://www.youtube.com ». Протоколы, домены и порты должны совпадать. 'при попытке доступа к свойству' contentWindow' –

+0

@ bfred.it Метод все еще работает, или многие другие скрипты (в том числе официальный API YouTube iframe) сломаются. Какой код вы используете? –

Смежные вопросы