无法在 IE11 中覆盖 IE8 兼容模式
Unable to override IE8 compatibility mode in IE11
我的目标是在用户将兼容模式设置为 IE8 的 IE11 浏览器上支持 HTML5,以支持旧版 Web 应用程序(例如在企业内部网上)。当他们访问我的站点时,我想基本上关闭该兼容模式设置。
我通读了 S.O 中描述的许多类似讨论,其中一些似乎已经解决了当时的问题。所有似乎都指向 "X-UA-Compatible" META 标签,或类似的 Header。我都试过了。两者都没有为我工作。我包括了我正在使用的测试页面,以及我的浏览器报告的响应 headers(文档模式 8 中的 IE 11.916.10586.0 运行)。
我的测试页显示 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 浏览器上的输出如下所示:
“网络设置”选项卡报告的响应 headers 包括:
X-UA-Compatible: IE=edge
如果任何解决方案有效,我希望在为 documentMode 8 配置的 IE11 浏览器中看到单词 "Rounded" 周围的圆角边框。目前,我看到方形边框。在我的 (app/server) 端有什么办法可以解决这个问题吗?
您提供的代码是正确的。 IE 中的测试 运行 在我的机器上以 IE11 模式呈现。如果您在页面刷新时打开调试器,我有 运行 次 IE 卡在文档模式。
确保安装最新版本的 IE 也无妨。
如果父页面将其 "X-UA-Compatible" 模式设置为 IE8,则该页面下的 IFRAME 中的页面 运行 将继承该设置。添加元标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
将不会覆盖来自框架父级的 X-UA-Compatible 元标记。当需要时(即当父页面设置 content="IE=8" 时,本地 content="IE=edge" 不没用。我认为设置 IE=edge 的唯一用例是告诉系统忽略子 iframe 的 X-UA-Compatible 元标记。
如果您的页面被迫进入 IE=8 模式,因为用户打开了 his/her "F12 Developer Tools" 并手动选择了 Document Mode 8 (IE8 模式),那么只要开发人员工具保持打开状态,该模式就会覆盖为该页面指定或继承的任何设置。关闭 "F12 Developer Tools" 会将页面恢复为正常设置。
我的目标是在用户将兼容模式设置为 IE8 的 IE11 浏览器上支持 HTML5,以支持旧版 Web 应用程序(例如在企业内部网上)。当他们访问我的站点时,我想基本上关闭该兼容模式设置。
我通读了 S.O 中描述的许多类似讨论,其中一些似乎已经解决了当时的问题。所有似乎都指向 "X-UA-Compatible" META 标签,或类似的 Header。我都试过了。两者都没有为我工作。我包括了我正在使用的测试页面,以及我的浏览器报告的响应 headers(文档模式 8 中的 IE 11.916.10586.0 运行)。
我的测试页显示 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 浏览器上的输出如下所示:
“网络设置”选项卡报告的响应 headers 包括:
X-UA-Compatible: IE=edge
如果任何解决方案有效,我希望在为 documentMode 8 配置的 IE11 浏览器中看到单词 "Rounded" 周围的圆角边框。目前,我看到方形边框。在我的 (app/server) 端有什么办法可以解决这个问题吗?
您提供的代码是正确的。 IE 中的测试 运行 在我的机器上以 IE11 模式呈现。如果您在页面刷新时打开调试器,我有 运行 次 IE 卡在文档模式。
确保安装最新版本的 IE 也无妨。
如果父页面将其 "X-UA-Compatible" 模式设置为 IE8,则该页面下的 IFRAME 中的页面 运行 将继承该设置。添加元标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
将不会覆盖来自框架父级的 X-UA-Compatible 元标记。当需要时(即当父页面设置 content="IE=8" 时,本地 content="IE=edge" 不没用。我认为设置 IE=edge 的唯一用例是告诉系统忽略子 iframe 的 X-UA-Compatible 元标记。
如果您的页面被迫进入 IE=8 模式,因为用户打开了 his/her "F12 Developer Tools" 并手动选择了 Document Mode 8 (IE8 模式),那么只要开发人员工具保持打开状态,该模式就会覆盖为该页面指定或继承的任何设置。关闭 "F12 Developer Tools" 会将页面恢复为正常设置。