我正在动态创建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必须像在浏览器窗口中那样做出反应。欢呼声。
答案 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();