2012-05-26 64 views
2

我有一個頁面2內聯框架我想知道是否有可能在影響iframe的父窗口中有鏈接。如何讓JavaScript針對iframe?

我知道如何製作一個正常的鏈接來改變iframe中的頁面,但我需要讓我激活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.獲取iframe的內容2.更改iframe的內容,3.更改iframe的鏈接html頁面。 –

+0

抱歉沒有儘快回覆你,但我一直忙於工作。我不想做這些事情。我想要做的就是在iframe中激活一些javascript。我非常肯定你也可以用閃光燈做到這一點。 – user1373771

回答

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被強制執行。

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