2012-03-07 79 views
2

我正在動態創建一個iframe,並且在某些時候我需要向其中插入javascript。我可以添加標籤的字符串很好,但有沒有辦法強制iframe重新評估其腳本,所以JavaScript是可執行的?強制iframe評估其javascript?

的需要做什麼

簡單的例子是,用戶提供:

<h2 onclick="doSomething();">Click me</h2> 

function doSomething() { alert('you clicked me'); } 

我需要將HTML推入iframe的身體,我需要推將JavaScript字符串轉換爲iframe中的腳本,以使其可以工作。

+0

如何從父窗口調用函數doSomethinh()?需要澄清。 – 2012-03-07 19:01:04

+0

你可以在父窗口中的iframe中使用一個函數(假設targetFrame是iframe id)document.getElementById('targetFrame')。contentWindow.doSomething(); – 2012-03-07 19:04:25

+1

對不起,沒有意識到我的帖子沒有格式化我想要的內容,請再看一遍。 – CDelaney 2012-03-07 19:23:45

回答

1

如果將onclick="doSomething();"更改爲onclick="top.doSomething();,它將起作用。因爲複製的h2在當前窗口中查找doSomething函數,並且在iframe中沒有doSomething函數。

如果您使用top關鍵字,它將在頂部窗口中顯示功能。在iframe中,這意味着尋找父母,並在父母尋找自我,並將在父母和iframe中工作。除非沒有其他父母存在。

2

HTML

<!--Container of iframe, iframe will be appended to this div later--> 

​<div id='myDiv'>​</div>​ 

JS

var iframe = document.createElement('iframe'); 
iframe.frameBorder = 1; 
iframe.width = "500px"; 
iframe.height = "250px"; 
iframe.id = "iframe"; 

iframe.onload = function() 
{ 
    var doc = iframe.contentDocument || iframe.contentWindow.document; 
    var el = doc.createElement('h2'); 
    el.id="myH2"; 
    el.className="red"; 
    el.style.color="red"; 
    el.style.cursor="pointer"; 
    el.textContent = "Click me"; 
    el.onclick=doSomething; 
    doc.body.appendChild(el); 
} 

document.getElementById("myDiv").appendChild(iframe); 

function doSomething() 
{ 
    alert("OK"); 
}​ 

這裏是一個fiddle