我正在动态创建一个iframe,在某些时候我需要将javascript插入其中。我可以添加带有字符串的标签,但有没有办法强制iframe重新评估其脚本,以便javascript可执行?
需要做的简单示例是,用户提供:
<h2 onclick="doSomething();">Click me</h2>
和
function doSomething() { alert('you clicked me'); }
我需要将html推送到iframe的主体,我需要将javascript字符串推送到iframe的脚本中,以便能够实现这一点。
答案 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中使用。除非没有其他父母存在。