【问题标题】:Unable to override IE8 compatibility mode in IE11无法在 IE11 中覆盖 IE8 兼容模式
【发布时间】:2017-05-25 20:07:53
【问题描述】:

我的目标是在 IE11 浏览器上支持 HTML5,这些浏览器的用户将其兼容模式设置为 IE8 以支持旧版 Web 应用程序(例如,在公司 Intranet 上)。当他们访问我的网站时,我想基本上关闭该兼容模式设置。

我已经阅读了 S.O 中描述的许多类似讨论,其中一些在当时似乎已经解决了问题。所有似乎都指向“X-UA-Compatible”META 标签或类似的标头。我都试过了。两者都没有为我工作。我包括我正在使用的测试页面,以及我的浏览器报告的响应标头(IE 11.916.10586.0 在文档模式 8 下运行)。

我的测试页面显示了 JavaScript 值 document.documentMode,并且还使用了 IE8 中不可用的 CSS3 效果显示了一个带有圆角边框的 DIV。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Compatibility</title>
<style>
div { padding: 10px; border: 1px solid #123; border-radius: 10px }
</style>
</head>
<body>
<p>documentMode=<span id="documentMode"></span>
<p>compatMode=<span id="compatMode"></span>
<div>Rounded</div>
<script>
document.getElementById("documentMode").innerHTML=document.documentMode;
document.getElementById("compatMode").innerHTML=document.compatMode;
</script>
</body>
</html>

目前在 IE8 兼容模式下的 IE11 浏览器上的输出如下所示:

“网络设置”选项卡报告的响应标头包括:

X-UA-Compatible: IE=edge

如果任何解决方案有效,我希望在为 documentMode 8 配置的 IE11 浏览器中看到“圆形”一词周围的圆形边框。目前,我看到方形边框。我有什么办法可以在我的(应用程序/服务器)端解决这个问题吗?

【问题讨论】:

  • 确保“edge”的元标记是标题中的 first 元标记。如果不是第一个,IE 会忽略它。
  • 您可以在我上面包含的 HTML 源代码中看到,元标记是 head 元素中任何类型的第一个标记。
  • 如果有企业设置强制 IE8 看起来像 IE8 无论如何,也许考虑像 CSS Pie 这样的 polyfill? hongkiat.com/blog/css3-border-radius-in-internet-explorer
  • 谢谢,@Joy。圆角是行为上的一个小差异,旨在作为一个易于证明的示例。这是一个很好的建议,但我可能会遇到不同的问题(该站点包含第三方供应商生产的打包模块)。

标签: internet-explorer-11 ie8-compatibility-mode


【解决方案1】:

您提供的代码是正确的。在 IE 中运行的测试在我的机器上以 IE11 模式呈现。如果您在页面刷新时打开调试器,我曾经遇到过 IE 卡在文档模式中的情况。

确保安装了最新版本的 IE 也没有什么坏处。

【讨论】:

  • 我看到任何网站都有类似的行为,无论它们是否包含“X-UA-Compatible”元标记。我的解释是,使用 F12 开发人员工具设置的 IE8 兼容模式仅在这些工具打开时才有效。
【解决方案2】:

如果父页面将其“X-UA-Compatible”模式设置为 IE8,则在该页面下的 IFRAME 中运行的页面将继承该设置。添加元标记:

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

不会覆盖框架父级的 X-UA 兼容元标记。需要时(即当父页面设置 content="IE=8" 时,本地 content="IE=edge" 不起作用。我认为设置 IE=edge 的唯一用例是告诉系统忽略子 iframe 的 X-UA-Compatible 元标记。

如果您的页面由于用户打开他/她的“F12 开发人员工具”并手动选择文档模式 8(IE8 模式)而被强制进入 IE=8 模式,那么只要开发人员工具保持打开状态,该模式就会覆盖为该页面指定或继承的任何设置。关闭“F12 开发者工具”会将页面恢复为正常设置。

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 2011-03-15
    • 2014-07-02
    相关资源
    最近更新 更多