是的,您可以從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