IFrame中的动态脚本不会触发window.onload

时间:2011-01-20 04:45:01

标签: javascript html iframe onload-event

我正在动态创建IFrame,然后向其添加script标记,其代码应在帧加载时执行,但永远不会执行。

$stage.html("<iframe src='javascript:;' id='frame'></iframe>");
$frame = $("#frame");

frame =  $frame[0].contentDocument ? $frame[0].contentDocument :  $frame[0].contentWindow.document;

script= frame.createElement('script'),
head = frame.getElementsByTagName("head")[0];

script.innerHTML = "window.onload = function() { alert('loaded'); }";

head.appendChild(script);

我假设在将代码添加到window onload之前触发了IFrame事件。反正有没有确保它被称为?它也需要包含在window.onload中,就像基于JS的代码编辑器一样,因此iframe必须像在浏览器窗口中那样做出反应。欢呼声。

1 个答案:

答案 0 :(得分:2)

使用window.write()解决。

frame = document.createElement("iframe"); 
frame.src = "javascript:;";
document.body.appendChild(frame);

win = frame.contentWindow;
win.document.open();
win.document.write(html);
win.document.close();