2

我开发了一个在我公司的 Intranet 中运行的 Web 应用程序。我在处理过程的早期遇到了 Internet Explorer 的自动兼容模式问题,并添加了代码以强制我的页面在最新版本的 IE 中显示:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

这非常有效。直到我的 Web 应用程序最近被集成到另一个 Intranet 中,我们的客户也可以使用它。网页超出了我的控制范围。我的应用程序集成在另一个 html 页面内的框架内。现在我回到了兼容模式,它破坏了我的网络应用程序的关键功能。

是否可以强制最新版本的浏览器仅解释我框架内的内容?

4

2 回答 2

2

根据this & this(甚至比第一次更好-注意谁标记了答案),不可能有解决方案。

如果想一想,IE 的 GUI 实际上暗示整个页面以兼容模式呈现(每页只有 1 个指示器图标,在地址栏旁边),因此可以安全地假设一切都被视为相同。要么全页兼容性,要么根本不兼容。

PS我知道这不是很有帮助,但它试图提供一个不可能的正当理由,最好从不同的方向开始寻找。就个人而言,我会尝试使用 HTML5 ( <!DOCTYPE html>)。可以有选择地启用(仅在您的框架上)并且可能不会太难调整,因为您已经使用了“边缘”......

于 2015-05-29T20:35:45.523 回答
1




此屏幕截图显示 IE 兼容性视图可以被托管框架覆盖。

框架在这里使用的技术是 (1) 将 X-UA-Compatible 标头注入主机头,(2) 通过 document.write(),然后 (3) 重新加载主机页面。它具有将页面中的所有框架提升到所选级别的效果。

在线演示


在将 googledrive 放入兼容性视图之前,您会注意到演示菜单没有任何效果。它无法覆盖任何模式 IE9 或更高版本,因为它们已“锁定”。IE8、IE7 和 IE5 模式(以及 CV)被“解锁”并且可以被覆盖。这就是诀窍的基础。

另一方面,以下演示的主机页面包含一个 X-UA-Compatible IE=5(又名 Quirks)标头。因此,即使没有将 googledrive 放入兼容性视图,框架也能够覆盖主机模式。

在线演示 (Host XUA=IE5)


这里的概念来源于这个MS-Connect线程,它讨论了 iframe 中的 IE 模式。

于 2015-06-02T09:06:45.363 回答