IE11在Iframe下的怪癖模式-javascript错误

IE11 quirks mode under Iframe - javascript errors

本文关键字:模式 -javascript 错误 Iframe IE11      更新时间:2023-09-26

我读了好几天书,一直在寻找答案,但都找不到,希望这个帖子能带来救赎:)

在我的公司里,我们有一个正在开发IE8的网络应用程序。我们正在尝试迁移到IE11。我们几乎到了,但是,我们有一个旧模块,它是在一个旧框架中编写的,该框架托管在iframe中,并以怪癖模式运行(用meta-http-equiv="X-UA-Compatible"content="IE=emulate7"或IE=5定义,我两者都试过了)。只要在IE8文档模式(通过x-ua-compatible元标记)或企业模式下呈现父/主窗口,iframe就可以正常工作。

但是,一旦我将父/主窗口更改为IE=9及以上,我就会从子iframe中得到javascript错误(超出我的能力范围)。

我知道IE11在怪癖模式下使用模拟器,而不是真正的引擎,但我在任何地方都找不到关于javascript引擎的详细信息。这是否意味着,如果父主窗口呈现为IE9及以上版本,则子iframe将使用ECMAscript 5,而不是应该使用的jscript?

我的问题有解决办法吗?谢谢大家!

从IE10开始,子模式可以与父模式不同

请参阅此链接。上面写着。。。

IE9模式以标准模式显示子框架(因为父文档处于标准模式)。从Internet Explorer开始10,但是,子框架可以模仿怪癖模式。有关更多信息,请参阅IEBlog:IE10中的HTML5 Quirks模式。然而,为了获得最佳效果,请使用文档模式一致。

从IE9开始,框架仅限于父文档的文档,例如,如果父文档以标准模式呈现,则子框架也必须以类似方式呈现。

也许一种方法是修改内容,使您的IE9+窗口在新的父窗口中显示打开旧应用程序的链接,该窗口显示您的子框架所需的任何文档模式。

您可以使用showModelessWindow打开包含单独HTML文件的子窗口,该文件将在父文档中启动正确的文档模式。。。然后加载您正在使用的IFRAME。示例代码:

var sOptions = "scroll: no; status: no; resizable: yes;";
window.showModelessDialog("myFrameContainer.html", "", sOptions );