javascript - 如何让使用 document.write() 创建的 JavaScript 执行?

标签 javascript internet-explorer-6

我有一个多帧布局。其中一个框架包含一个表单,我正在通过 XMLHttpRequest 提交该表单。现在,当我使用 document.write() 重写带有表单的框架时,我添加的新页面包含任何 javascript,那么 javascript 没有在 IE6 中执行?

例如:

document.write("<html><head><script>alert(1);</script></head><body>test</body></html>");

在上面的例子中,页面内容被替换为 test 但 alert() 没有被执行。这在 Firefox 中运行良好。

上述问题的解决方法是什么?

最佳答案

与其将 JS 代码公开,不如将其封装在一个函数中(我们称之为“doIt”)。您的框架窗口(假设它的名称是“formFrame”)有一个父窗口(即使它不可见),您可以在其中执行 JS 代码。在该范围内执行实际的帧重写操作:

window.parent.rewriteFormFrame(theHtml);

父窗口中的 rewriteFormFrame 函数看起来像这样:

function rewriteFormFrame(html) {
    formFrame.document.body.innerHTML = html;
    formFrame.doIt();
}

关于javascript - 如何让使用 document.write() 创建的 JavaScript 执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69546/

相关文章:

javascript - 通过 Selenium 抓取动态内容?

javascript - Uncaught ReferenceError : calcAge is not defined

javascript - 如何在 IE6/7 中获取 textarea 行高

memory-leaks - IE 6 中存在内存泄漏的大型 Web 应用程序

javascript - 预加载视频文件 - HTML5 播放

javascript - 通过 javascript 将一个绝对定位的 child 集中到一个没有定位的 parent 身上

html - IE6 错误地渲染了 UL

html - IE6 中不可见的垂直边距

jquery - 我如何使 liteAccordion(jQuery 的水平 Accordion 插件)在 IE6 中工作

javascript - 使用 Angular.js 动态添加表格列