IE9有一个奇怪的问题,它以兼容模式呈现内部网站点。
有没有人知道如何防止这种情况发生?
注意:我不是想在单个用户计算机上阻止它的方法,而是一些以编程方式阻止网站以兼容模式呈现的方法。
答案 0 :(得分:31)
经过详尽的搜索后,我发现如何在this blog上的IE9中成功阻止内网站点以兼容模式呈现:
来自Tesmond的博客
IE9中有2个怪癖会导致兼容模式保持有效。 X-UA兼容元元素必须是头部分中的第一个元元素。 在X-UA-Compatible元素之前,您不能拥有条件IE语句。 这意味着如果您使用Paul Irish的精彩HTML5 Boilerplate然后在具有默认IE9设置的Intranet上,您的网站将以兼容模式显示。您需要从以下内容更改样板的开头: -
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
为:
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">
答案 1 :(得分:4)
根据@ novicePrgrmr的回答,似乎有一种解决方法,IE9在IE7模式下加载内部网。虽然这仍然会触发兼容模式,但我发现对Paul Irish's HTML5 boilerplate markup进行了轻微修改,至少允许IE9在IE9标准中呈现内部网:
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">
</head>
<!--[if lt IE 7]> <body class="home lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <body class="home lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <body class="home lt-ie9"> <![endif]-->
<!--[if IE 9]> <body class="home lt-ie10"><![endif]-->
<!--[if gt IE 9]><!--> <body class="home"> <!--<![endif]-->
<p>content</p>
</body>
</html>
这仍然是有效的HTML,如果您使用.lt-ie
而不是html.lt-ie
定位IE,现有的IE特定CSS应该仍然可以正常工作。
答案 2 :(得分:3)
这可以通过添加简单的元标记
来完成<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
另一种方法是将此代码添加到.htaccess文件中!
# ----------------------------------------------------------------------
# Better website experience for IE users
# ----------------------------------------------------------------------
# Force the latest IE version, in various cases when it may fall back to IE7 mode
# github.com/rails/rails/commit/123eb25#commitcomment-118920
# Use ChromeFrame if it's installed for a better experience for the poor IE folk
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=Edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
<FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|oex|xpi|safariextz|vcf)$" >
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
答案 3 :(得分:1)
如果您可以在主页上添加代码,只需添加以下内容:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
到您网站的标题。
(您也可以使用<meta http-equiv="X-UA-Compatible" content="IE=9">
强制使用IE9-Renderer)
这将强制IE9以标准模式呈现。
另一种方法是使用另一种doctype: 把它放在代码的顶部:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">