iframe下的IE11怪癖模式--javascript错误

时间:2014-10-05 20:03:51

标签: javascript html iframe internet-explorer-11 quirks-mode

我正在阅读并寻找几天的答案而且找不到答案,希望这个帖子能带来救赎:)

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

但是只要我将父/主窗口更改为IE = 9及更高版本,我就会从子iframe中获得javascript错误(超出我的处理范围)。

据我所知,IE11使用模拟器进行怪异模式,而不是真正的引擎,但我无法找到有关javascript引擎的任何细节。 这是否意味着如果呈现父主窗口是IE9及更高版本,则子iframe将使用ECMAscript 5而不是jscript,应该使用它?

我的问题有解决办法吗? 谢谢你们!

2 个答案:

答案 0 :(得分:3)

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

See this link.它说......

  

IE9模式在标准模式下显示子帧(因为   父文档处于标准模式)。从Internet Explorer开始   但是,子帧可以模拟怪癖模式。有关详细信息,请参阅   IE10中的IEBlog: HTML5 Quirks模式。但是,为了获得最佳效果,请使用   文档模式一致。

答案 1 :(得分:1)

从IE9开始,帧仅限于父文档的文档,例如,如果父文档以标准模式呈现,则子框架也被强制渲染。

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

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

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