Ker*_*ick 246 internet-explorer ie8-compatibility-mode x-ua-compatible
我很困惑.我应该可以设置
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Run Code Online (Sandbox Code Playgroud)
IE8和IE9应使用最新的渲染引擎呈现页面.但是,我刚刚对它进行了测试,如果在我们网站的其他地方启用了兼容模式,它将保留在我们的页面上,即使我们应该强制它不要.
怎么是你应该确保IE浏览器没有(甚至在企业内部网)使用兼容模式?
FWIW,我正在使用HTML5 DocType声明(<!doctype html>).
以下是该页面的前几行:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="innerpage no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="innerpage no-js ie8"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="en" class="innerpage no-js">
<!--<![endif]-->
<head>
<meta charset="ISO-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Run Code Online (Sandbox Code Playgroud)
编辑:我刚刚了解到 IE8的默认设置是对Intranet站点使用IE7兼容模式.这会覆盖X-UA兼容的元标记吗?
Tim*_*lin 260
如果您需要覆盖IE的Intranet站点的兼容性视图设置,您可以在web.config(IIS7)中或通过网站属性(IIS6)中的自定义HTTP标头执行此操作,并在那里设置X-UA兼容.元标记不会覆盖兼容性视图设置中IE的Intranet设置,但如果您在托管服务器上设置它,它将覆盖兼容性.
IIS7中web.config的示例:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=EmulateIE8" />
</customHeaders>
</httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
编辑:我clear从之前删除了代码add; 这是对复制和粘贴的不必要的疏忽.好评,评论者!
neo*_*swf 182
服务器端解决方案是推荐的,正如@TimmyFranks在他的回答中提出的那样,但是如果需要X-UA-Compatible在页面级别实现规则,请阅读以下提示,以便从已经被烧毁的人的经验中受益
该X-UA-Compatiblemeta标签必须在标题后直接出现<head>的元素.没有其他元标记,css链接和js脚本调用可以放在它之前.
<head>
<title>Site Title</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">
<script type="text/javascript" src="/jsFile.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="shortcut icon" href="/apple-touch-icon.png" />
</head>
Run Code Online (Sandbox Code Playgroud)
如果页面中有任何条件注释(假设位于其中<html>),则必须将它们放在...之后<head>.
// DON'T: place class inside the HTML tag
<!--[if gt IE 8]><!-->
<html class="aboveIe8">
<!--<![endif]-->
// DO: place the class inside the BODY tag
<!--[if gt IE 8]><!-->
<body class="aboveIe8">
<!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
Html5BoilerPlate的团队写了这个错误 - http://h5bp.com/i/378 他们有几个解决方案.
关于Intranet和兼容性视图,当您转到工具>兼容性视图设置时,会有设置.

tj1*_*111 38
请注意,如果您使用PHP提供服务,则可以使用以下代码进行修复.
header("X-UA-Compatible: IE=Edge");
Run Code Online (Sandbox Code Playgroud)
Ker*_*ick 25
事实证明,这与微软的"智能"选择有关,即使X-UA-Compatible设置为所有内网站点强制进入兼容模式IE=edge.
小智 9
我也在本地主机的IE7文档标准中得到了同样的IE9渲染问题.我尝试了很多条件评论标签,但不成功.最后,我刚刚删除了所有条件标签,并在下面的头部之后立即添加了元标记,它就像魅力一样.
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
即使您取消选中"在兼容性视图中显示Intranet站点"选项,并在响应标头中具有X-UA-Compatible,还有另一个原因可能导致您的浏览器默认为"兼容性视图" - 您的组策略.查看您的控制台以获取以下消息:
HTML1203:xxx.xxx已配置为通过组策略在兼容性视图中运行.
其中xxx.xxx是您网站的域名(即test.com).如果您看到这个,那么您的域的组策略已设置,以便任何以test.com结尾的站点将自动呈现为兼容模式,而不管doctype,header等.
有关详细信息,请参阅以下链接(解释html代码):http://msdn.microsoft.com/en-us/library/ie/hh180764(v = vs.85).aspx
正如NEOSWF指出的那样,保罗爱尔兰条件评论会阻止元标记产生任何影响.
这里有几个修复程序(http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/)
这些包括:
添加两个HTML类,使用服务器标头并在doctype之上添加条件注释.
在我的最新项目中,我决定删除保罗爱尔兰条件评论.我不喜欢在html之前添加任何内容而不先进行大量测试的想法,并且通过查看HTML来查看已设置的内容很高兴.
最后,我在身体后面直接包围了一个div,并使用了条件评论,例如
<!--[if IE 7]><div class="ie7"><!--<![endif]-->
... regular body stuff
<!--[if IE 7]></div><!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
我可以在身体周围做到这一点,但对于像Wordpress这样的CMS来说更难.
显然它是标记内的另一个DIV,但它仅适用于较旧的浏览器.
我认为这可能是基于每个项目的决定.
我还读过一些关于需要在前1024字节中出现的charset元标记的内容,以确保这一点.
有时最简单,最容易阅读的想法是最好的,它绝对值得思考!感谢上面链接上的第6条评论,指出了这一点.
我将以下内容添加到我的htaccess文件中,该文件可以解决问题:
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
373130 次 |
| 最近记录: |