2012-11-28 133 views
16

我的網頁中有一個iframe視頻列表。停止所有在點擊鏈接時播放iframe視頻javascript

<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> 

我需要停止在點擊鏈接Stop all videos所有玩的iframe視頻。我怎樣才能做到這一點?

+0

看到的是https://開發商。 google.com/youtube/iframe_api_reference – OammieR

回答

39

嘗試這種方式,

<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> 
+1

它工作正常。但問題是重新加載所有視頻需要很長時間。有沒有其他方法或我可以更快地重新加載? –

+0

由於瀏覽器存在額外開銷,因此iframe速度較慢。 – Swarne27

+0

和您的來源是從外部網站以及 – Swarne27

0

刷新一次所有的I幀停止視頻

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

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

它僅適用於單個視頻。如果多個視頻正在播放,則不起作用。 –

9

這應該停止所有的一切I幀在網頁上播放視頻:

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

我編輯了上面的代碼一點點,以下爲我工作.......

<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> 
0
$("#close").click(function(){ 
    $("#videoContainer")[0].pause(); 
}); 
6

止動裝置暫停和視頻設置爲時間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

它拒絕訪問「文檔」的許可 – sunnyiitkgp

+0

它適用於我所有的項目。我已經添加了上面使用的函數。 –

+2

iframe內容和應用程序必須位於同一個域中! – vijayst

0

您可以修改這個代碼用迭代

/** 
* 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 還張貼在這裏(由我) :how to destroy bootstrap modal window completely?

0

將所有iframe重新加載到st他們是一個可怕的想法。您應該利用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(); 

這將停止所有youtubes iframe視頻。

您可以使用這些信息的關鍵字來啓動/停止/暫停使用YouTube視頻embdded:

stopVideo 
playVideo 
pauseVideo 

看看下面的現場演示的鏈接:

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