是的,您可以从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源是不同于您的域名,你无法控制从帧视频的结论。以上是如何在跨站点脚本编写不会影响您时控制视频。
不能存取权限与脚本的iframe时,它不是在同一个域。 (搜索跨站点脚本XSS)。我曾经试图通过在iFrame上触发一个空格键事件来做到这一点(应该让视频停止),但我无法让它工作并放弃。 – Michiel