Остановить воспроизведение всех видеороликов iframe, нажав ссылку javascript

У меня есть список видео iframe на моей веб-странице.

<iframe width="520" height="360" src="http://www.youtube.com/embed/2muxrT5_a6E" frameborder="0" allowfullscreen></iframe>
<iframe width="520" height="360" src="http://www.youtube.com/embed/2muxrT5_a6E" frameborder="0" allowfullscreen></iframe>
<iframe width="520" height="360" src="http://www.youtube.com/embed/2muxrT5_a6E" frameborder="0" allowfullscreen></iframe>
<a href="#" class="close">Stop all videos</a>

Мне нужно остановить воспроизведение всех видеороликов iframe по ссылке Stop all videos. Как я могу это сделать?

Ответы

Ответ 1

Попробуйте этот путь,

<script language="javascript" type="text/javascript" src="jquery-1.8.2.js"></script>
<script language="javascript" type="text/javascript">
$(function(){
    $('.close').click(function(){      
        $('iframe').attr('src', $('iframe').attr('src'));
    });
});
</script>

Ответ 2

Это должно остановить все видео, воспроизводимые во всех iframe на странице:

$("iframe").each(function() { 
        var src= $(this).attr('src');
        $(this).attr('src',src);  
});

Ответ 3

Остановка означает приостановку и установку видео во время 0:

        $('iframe').contents().find('video').each(function () 
        {
            this.currentTime = 0;
            this.pause();
        });

Этот код jquery будет делать именно это.

Не нужно заменять атрибут src и снова загружать видео.


Небольшая функция, которую я использую в своем проекте:

    function pauseAllVideos() 
    { 
        $('iframe').contents().find('video').each(function () 
        {
            this.pause();
        });
        $('video').each(function () 
        {
            this.pause();
        });
    }

Ответ 4

Перезагрузка всех фреймов просто для их остановки - ужасная идея. Вы должны получить преимущество от HTML5.

Без использования библиотеки YouTube iframe_API; Вы можете просто использовать:

var stopAllYouTubeVideos = () => { 
  var iframes = document.querySelectorAll('iframe');
  Array.prototype.forEach.call(iframes, iframe => { 
    iframe.contentWindow.postMessage(JSON.stringify({ event: 'command', 
  func: 'stopVideo' }), '*');
 });
}
stopAllYouTubeVideos();

который остановит все видео YouTube.

Вы можете использовать эти ключевые слова сообщения для запуска/остановки/приостановки вставки видео на YouTube:

stopVideo
playVideo
pauseVideo

Посмотрите ссылку ниже для демонстрации в реальном времени:

https://codepen.io/mcakir/pen/JpQpwm

Ответ 5

Я немного изменил приведенный код, и для меня это работало........

<script>
function stop(){<br/>
       var iframe = document.getElementById('myvid');<br/>
     var iframe1 = document.getElementById('myvid1');<br/>
      var iframe2 = document.getElementById('myvid2');<br/>
    iframe.src = iframe.src;<br/>
    iframe1.src=iframe1.src;<br/>
    iframe2.src=iframe2.src;<br/>
}<br/>

</script>

Ответ 6

$("#close").click(function(){
  $("#videoContainer")[0].pause();
});

Ответ 7

Перезагрузите все iframes снова, чтобы остановить видео

<a href="#" class="close" onclick="stop();">Stop all videos</a>

function stop(){
    var iframe = document.getElementById('youriframe');
    iframe.src = iframe.src;
}

Ответ 8

Вы можете изменить этот код с помощью итерации

/**
 * Stop an iframe or HTML5 <video> from playing
 * @param  {Element} element The element that contains the video
 */
var stopVideo = function ( element ) {
    var iframe = element.querySelector( 'iframe');
    var video = element.querySelector( 'video' );
    if ( iframe ) {
        var iframeSrc = iframe.src;
        iframe.src = iframeSrc;
    }
    if ( video ) {
        video.pause();
    }
};

OWNER: https://gist.github.com/cferdinandi/9044694 также опубликован здесь (мной): как полностью уничтожить загрузочное модальное окно?

Ответ 9

Здесь чисто решение Javascript в 2019 году

const videos = document.querySelectorAll('iframe');
const close = document.querySelector('.close');

close.addEventListener('click', () => {
   videos.forEach((i) => {
      let source = i.src;
      i.src = '';
      i.src = source;
   });
});