我有一个包含 2 iframes 的页面,我想知道是否有可能在父窗口中有一个影响iframe的链接。
我知道如何制作一个更改iframe页面的普通链接,但我需要制作I,它会将JavaScript激活到iframe中。
// The JS | normally in one line
javascript:var%20KICKASSVERSION='2.0';
var%20s%20=%20document.createElement('script');
s.type='text/javascript';document.body.appendChild(s);
s.src='//hi.kickassapp.com/kickass.js';
void(0);
如果你把它放到一个地址栏中,它可以在不改变页面的情况下工作,但我想知道这是否可以在iframe中使用。谢谢!
答案 0 :(得分:1)
HTML iframe具有contentDocument
属性(请参阅the MDN page on iframes),允许您操作iframe的内部文档。
粗略的指导方针(未经测试,但你明白了:)):
var iframe = document.querySelector("iframe");
iframe.contentDocument.location.href = "..."; // change the inner iframe's location
iframe.contentDocument.body.appendChild(yourScriptNode); // append a script inside the iframe
答案 1 :(得分:1)
查看代码,最简单的方法是执行以下操作:
var iframe=/*DOM REFERENCE TO YOUR IFRAME, for example:*/document.getElementById('myIframe');
iframe.src="javascript:var%20KICKASSVERSION='2.0';var%20s%20=%20document.createElement('script');s.type='text/javascript';document.body.appendChild(s);s.src='//hi.kickassapp.com/kickass.js';void(0);";
然而,更干净的方法是:
var myLink=document.getElementById('myLink');
myLink.addEventListener('click',function(evt){
var myFrame=document.getElementById('myFrame');
var win=myFrame.contentWindow;
win.KICKASSVERSION='2.0';
var s = win.document.createElement('script');
s.type='text/javascript';win.document.body.appendChild(s);
s.src='//hi.kickassapp.com/kickass.js';
evt.preventDefault();
}
请注意,在所有情况下都会强制执行same origin policy。