我开发了一个在我公司的Intranet中运行的Web应用程序。我在我的流程早期出现了Internet Explorer自动兼容模式的问题,并添加了代码以强制我的页面显示在最新版本的IE中:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
这完美无缺。直到我的Web应用程序最近集成到另一个Intranet中,也可供我们的客户使用。网页超出了我的控制范围。我的应用程序集成在另一个html页面的框架内。现在我回到兼容模式,它打破了我的网络应用程序的关键功能。
是否可以强制使用最新版本的浏览器来解释我的框架内的内容?
答案 0 :(得分:2)
根据this&amp; this(甚至比第一个 - 标记答案的通知更好),解决方案是不可能的。
如果考虑一下,IE的GUI实际上暗示整个页面以兼容模式呈现(每页只有1个指示符图标,在地址栏旁边),因此可以安全地假设所有内容都被视为相同。完整页面兼容性,或者根本不兼容。
P.S。我知道这不是太有用,但它试图提供一个有效的理由,为什么它不可能,最好开始向不同的方向看。就个人而言,我会尝试使用HTML5(<!DOCTYPE html>
)。可以有选择地启用(仅限你的框架)并且可能不太难调整,因为你已经使用'edge'......
答案 1 :(得分:1)
这个屏幕截图显示了IE兼容性视图可以被托管框架覆盖。
框架使用的技术是(1)将X-UA-Compatible标头注入主机头,(2)通过document.write(),然后(3)重新加载主机页面。它具有将页面中所有帧提升到所选级别的效果。
online demo
在此之前将googledrive放入兼容性视图,您会注意到演示菜单无效。它无法覆盖IE9或更高版本的任何模式,因为它们被“锁定”。 IE8,IE7和IE5模式(以及CV)被“解锁”并且可以被覆盖。这是诀窍的基础。
另一方面,以下演示的主机页面包含一个X-UA兼容的IE = 5(又名Quirks)标题。因此,即使不将googledrive放入兼容性视图,框架也能够覆盖主机模式。
online demo (Host XUA=IE5)
这里的概念源于此MS-Connect线程,讨论iframe中的IE模式。