我很困惑。我应该可以设置
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
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" />
编辑:我刚刚了解到,IE8的默认设置是内网站点使用IE7兼容模式。这会覆盖x - ua compatible元标记吗?
服务器端解决方案是推荐的,正如@TimmyFranks在他的回答中提出的那样,但如果需要在页面级别上实现X-UA-Compatible规则,请阅读以下提示,以从已经被烧伤的人的经验中受益
X-UA-Compatible元标记必须直接出现在<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>
如果页面中有任何条件注释(假设位于<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]-->
Html5BoilerPlate的团队写了关于这个错误的文章——http://h5bp.com/i/378
他们有几种解决方案。
关于内部网和兼容性视图,当您转到工具>兼容性视图设置时,有一些设置。
正如NEOSWF上面指出的,Paul Irish条件注释阻止了元标记的任何影响。
这里有几个修复程序(http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/)
这些包括:
添加两个HTML类,使用服务器头并在doctype上面添加条件注释。
在我最新的项目中,我决定删除Paul Irish条件注释。我不喜欢在html之前添加任何东西而不做大量的测试,只通过查看html就能看到已经设置了什么,这很好。
最后,我在正文后面直接包围了一个div,并使用了条件注释
<!--[if IE 7]><div class="ie7"><!--<![endif]-->
... regular body stuff
<!--[if IE 7]></div><!--<![endif]-->
我可以在身体周围这样做,但它更困难的cms,如Wordpress。
显然,这是标记内部的另一个DIV,但仅适用于较旧的浏览器。
我认为这可能是基于每个项目的决定。
我还读了一些关于字符集元标签需要在前1024字节,所以这确保了。
有时候最简单,最容易读懂的想法是最好的,绝对值得思考!感谢上面链接的第6条评论指出了这一点。
即使你没有勾选“在兼容性视图中显示intranet站点”选项,并且在你的响应头中有X-UA-Compatible,还有另一个原因为什么你的浏览器可能默认为“兼容性视图”——你的组策略。查看控制台,查看以下消息:
HTML1203: xxx。xxx已配置为通过组策略在兼容性视图中运行。
xxx。XXX是您网站(即test.com)的域名。如果您看到此情况,则您域的组策略已设置,以便任何以test.com结尾的站点将自动以兼容模式呈现,而不管文档类型、标题等。
欲了解更多信息,请参阅以下链接(解释html代码):http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx
此外,X-UA-Compatible必须是头部部分的第一个元标记
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>
顺便说一下,正确的顺序或主要的头部标签是:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">
<title>Site Title</title>
<!-- other tags -->
</head>
这种方式
我们将渲染引擎设置为在IExplorer开始处理之前使用
然后我们将文档设置为所有浏览器使用的编码
然后打印标题,它将使用已经定义的编码进行处理。