关于 internet explorer 6:如何让使用 document.write() 创建的 JavaScript 执行?

关于 internet explorer 6:如何让使用 document.write() 创建的 JavaScript 执行?

How do I get JavaScript created with document.write() to execute?

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

例如:

1
document.write("htmlheadscriptalert(1);/script/headbodytest/body/html");

在上述情况下,页面内容被替换为 test 但 alert() 没有被执行。这在 Firefox 中运行良好。

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


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

1
window.parent.rewriteFormFrame(theHtml);

父窗口中的 rewriteFormFrame 函数如下所示:

1
2
3
4
function rewriteFormFrame(html) {
    formFrame.document.body.innerHTML = html;
    formFrame.doIt();
}

解决方法是在回调函数或调用 eval() 方法时以编程方式将 script 块添加到 JavaScript 中的头部 DOM 元素。这是您在 IE 6 中完成这项工作的唯一方法。


您可以在 body 标记 (body onload="jsWrittenLoaded()") 中使用 onload 属性。


动态评估和/或执行脚本是不好的做法。非常糟糕的做法。非常非常非常糟糕的做法。我怎么强调都不为过,这是多么糟糕的做法。

AKA.: 听起来设计很糟糕。你又想解决什么问题?


简而言之:你不能真正做到这一点。然而,诸如 jQuery 之类的 JavaScript 库提供了功能来做到这一点。如果你依赖它,试试 jQuery。


另一种可能的选择是使用 JSON,动态添加将由浏览器自动处理的脚本引用。

干杯。


推荐阅读

    linux执行两次命令?

    linux执行两次命令?,系统,信息,连续,名称,命令,初级,首页,工具,管理,终端,lin

    linux命令执行安装?

    linux命令执行安装?,软件,系统,管理,网站,官网,市场,中心,最新,灵活,工作,如

    linux执行一条新命令?

    linux执行一条新命令?,系统,工作,命令,管理,网络,服务,信息,目录,路径,脚本,L

    监控linux执行命令?

    监控linux执行命令?,系统,情况,数据,实时,网络,信息,状态,时间,设备,命令,如

    linux命令卡死不执行?

    linux命令卡死不执行?,系统,设备,数据,密码,工具,情况,软件,环境,分析,命令,l

    linux执行c程序命令?

    linux执行c程序命令?,系统,工作,工具,信息,代码,命令,文件,保险,管理,环境,li

    linux命令执行中断?

    linux命令执行中断?,设备,系统,网络,工具,工作,通用,状态,名字,流程,进程,lin

    执行linux脚本命令行?

    执行linux脚本命令行?,工具,位置,地方,环境,数据,状态,暂停,增长,系统,基础,

    linux远端执行命令?

    linux远端执行命令?,系统,状态,软件,名称,密码,暂停,网络,环境,认证,在线,如

    linux命令行执行成功?

    linux命令行执行成功?,系统,信息,状态,服务,管理,百度,设计,灵活,代码,命令,L

    安卓执行linux命令行?

    安卓执行linux命令行?,系统,设备,基础,发展,标准,情况,信息,电话,号码,工具,

    c执行在linux命令?

    c执行在linux命令?,系统,环境,保险,工具,代码,命令,程序,文件,终端,语言,如何

    linux执行中退出命令?

    linux执行中退出命令?,档案,状态,命令,分析,数据,电脑,实时,系统,工具,编辑,l

    linux授权命令执行?

    linux授权命令执行?,系统,工作,数字,权限,文件,概念,标准,命令,目录,用户,在L

    linux定时执行命令?

    linux定时执行命令?,时间,系统,服务,任务,工作,标准,情况,周期性,工具,命令,l

    如何在linux执行命令?

    如何在linux执行命令?,单位,电脑,命令,系统,基础,发行,工具,工作,信息,文件,m

    linux看命令执行过程?

    linux看命令执行过程?,系统,服务,状态,软件,时间,数据,地址,命令,进程,情况,l

    linux登陆执行命令?

    linux登陆执行命令?,系统,服务,工具,地址,密码,百度,管理,检测,网络,第一,怎

    linux权限命令可执行?

    linux权限命令可执行?,系统,工具,信息,权限,数字,网络,发行,底部,代码,文件,l

    linux远程执行多命令?

    linux远程执行多命令?,工具,服务,命令,状态,暂停,代码,底部,时间,地址,系统,L