强制iframe评估其javascript?

时间:2012-03-07 18:56:04

标签: javascript iframe

我正在动态创建一个iframe,在某些时候我需要将javascript插入其中。我可以添加带有字符串的标签,但有没有办法强制iframe重新评估其脚本,以便javascript可执行?

需要做的简单示例是,用户提供:

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

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

我需要将html推送到iframe的主体,我需要将javascript字符串推送到iframe的脚本中,以便能够实现这一点。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

如果您将onclick="doSomething();"更改为onclick="top.doSomething();,则可以使用。因为复制的h2在当前窗口上显示doSomething函数,而在iframe中没有doSomething函数。

如果您使用top关键字,它将在顶部窗口中显示功能。在iframe中表示查找父项,在父项中查找self,它也可以在父项和iframe中使用。除非没有其他父母存在。