2017-05-25 137 views
0

我的目标是在IE11浏览器上支持HTML5,而IE11浏览器的用户将其兼容模式设置为IE8以支持旧版Web应用(例如在企业内部网上)。我想基本关闭他们访问我的网站时的兼容模式设置。无法覆盖IE11中的IE8兼容模式

我已经阅读了S.O中描述的许多类似的讨论,其中一些似乎已经解决了当时的问题。似乎都指向“X-UA兼容”META标签或类似的标头。我已经尝试了两种。两者都为我工作。我正在使用我正在使用的测试页,以及我的浏览器(在文档模式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> 

输出目前看起来像这样对IE11浏览器在IE8兼容模式:

Not rounded

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

X-UA-Compatible: IE=edge 

如果任何溶液作品,我希望在为documentMode 8配置的IE11浏览器中看到围绕“圆角”一词的圆角边框。目前,我看到方形边界。有什么我可以做,以解决这(我的(应用程序/服务器)端?

+0

确保“边缘”的元标记是标题中的**第一个**元标记。如果它不是第一个,IE会忽略它。 – cgTag

+0

您可以在上面包含的HTML源代码中看到元标记是头元素中任何排序的第一个标记。 – phatfingers

+0

如果有企业设置强制IE8看起来像IE8无论如何,也许可以考虑像CSS饼一样的polyfill? http://www.hongkiat.com/blog/css3-border-radius-in-internet-explorer/ – Joy

回答

0

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

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

覆盖从一帧的父级的X-UA兼容meta标签。当它需要(即当一个父页面已设置内容=“IE = 8”,本地内容=“IE =边缘”不起作用。我认为唯一的用例设置IE =边缘被告知系统忽略孩子I帧的X-UA兼容meta标签。

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

1

您提供的代码是正确的。 IE中的测试运行在我的机器上以IE11模式呈现。如果您在页面刷新上打开了调试程序,我已经在IE浏览器卡在文档模式下的各个时间运行。

它也不会伤害确保安装最新版本的IE。

+0

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