2015-06-24 58 views
1

这是视频是否可以在iframe上停止/暂停视频?

<iframe id="vt" width="420" autoplay="false" height="345" src="http://cache4.asset-cache.net/xd/468140002.mp4?v=1&c=IWSAsset&k=2&d=72990B68305E4FDFEE95B69A879131BCD6D7111452E48A17C03F8342D660D5A451EBC1DEC2A827C9&b=RTdG" frameborder="0" allowfullscreen></iframe> 

我想要做的停止或暂停就可以了,这可能吗?想在iframe中坚持只

http://jsfiddle.net/karimkhan/2Lgxk5h3/7/

任何功能的js/jQuery的的一样吗?

+0

不能存取权限与脚本的iframe时,它不是在同一个域。 (搜索跨站点脚本XSS)。我曾经试图通过在iFrame上触发一个空格键事件来做到这一点(应该让视频停止),但我无法让它工作并放弃。 – Michiel

回答

1

是的,您可以从iframe访问您的视频,但只有在帧源位于同一个域上时才能使用。如果它来自不同的域,则跨站点脚本(XSS)保护将会启动。

我想你是从你的域播放视频,(嵌入的iframe url域与页面域最相同)。

测试:

去这里: http://cache4.asset-cache.net/

,并运行此代码在控制台:

var video = undefined; 
//define iframe in html 
ifrm = document.createElement("IFRAME"); 
ifrm.setAttribute("src", "http://cache4.asset-cache.net/xd/468140002.mp4?v=1&c=IWSAsset&k=2&d=72990B68305E4FDFEE95B69A879131BCD6D7111452E48A17C03F8342D660D5A451EBC1DEC2A827C9&b=RTdG"); 
ifrm.setAttribute("id", "vt"); 
ifrm.setAttribute("width","420"); 
ifrm.setAttribute("autoplay","false"); 
ifrm.setAttribute("height","345"); 
document.body.appendChild(ifrm); 

//iframe load event 
ifrm.onload = function() { 
    var btnPlay = document.createElement("BUTTON"); 
    btnPlay.setAttribute("onclick", "play();"); 
    var t1 = document.createTextNode("PLAY ME");  
    btnPlay.appendChild(t1);        
    document.body.appendChild(btnPlay); 

    var btnPause = document.createElement("BUTTON");   
    btnPause.setAttribute("onclick", "pause();"); 
    var t2 = document.createTextNode("PAUSE ME");  
    btnPause.appendChild(t2);        
    document.body.appendChild(btnPause); 

    video = document.getElementById("vt").contentWindow.document.body.getElementsByTagName('video')[0]; 
} 


//play stop methods 
function play() 
{ 
    if (video != undefined) 
    video.play(); 
    return false; 
} 

function pause() 
{ 
    if (video != undefined) 
    video.pause(); 
    return false; 
} 

如果你的iframe源是不同于您的域名,你无法控制从帧视频的结论。以上是如何在跨站点脚本编写不会影响您时控制视频。

-1

我面临同样的问题,我试图暂停在本地/一个域(S3服务器)在iframe中的视频,花了几个小时。我可以知道,比我们使用视频标签,如果我们都可以从本地或一个域的视频,它提供了更多的控制和我使用的iframe YouTube视频

这里的代码,这里默认的控制是暂停

  <video width='200' height='180' src="" style='position:absolute;width:100%;height:100%;left:0' controls> 
      </video> 

要启用自动播放

 <video width='200' height='180' src="" style='position:absolute;width:100%;height:100%;left:0' controls autoplay> 
     </video> 

这将节省您的时间和给你更多的控制