26

IE9 有一个奇怪的问题,它以兼容模式呈现 Intranet 站点。

有谁知道如何防止这种情况发生?

注意:我不是在寻找一种方法来阻止它在单个用户的机器上,而是一些程序化的方法来阻止站点以兼容模式呈现。

4

4 回答 4

31

经过详尽的搜索,我在这个博客上找到了如何成功阻止内网站点在 IE9 中以兼容模式呈现:

来自 Tesmond 的博客

IE9 中有 2 个怪癖会导致兼容模式保持有效。X-UA-Compatible 元元素必须是 head 部分中的第一个元元素。X-UA-Compatible 元元素之前不能有条件 IE 语句。这意味着,如果您使用 Paul Irish 出色的 HTML5 样板,那么在具有默认 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">
于 2012-10-16T08:40:39.970 回答
4

根据@novicePrgrmr 的回答,似乎有一种解决方法可以让 IE9 在 IE7 模式下加载 Intranet。虽然这仍然会触发兼容模式,但我发现对Paul Irish 的 HTML5 样板标记稍作修改至少允许 IE9 以 IE9 标准呈现 Intranet:

<!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,并且现有的 IE 特定的 CSS 应该仍然可以正常工作,前提是您使用.lt-ie而不是html.lt-ie.

于 2014-08-18T02:47:21.003 回答
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>
于 2012-10-15T10:59:00.530 回答
1

如果您可以将代码添加到主页,则只需添加以下内容:

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

到您网站的标题。

(您也可以使用<meta http-equiv="X-UA-Compatible" content="IE=9">to force IE9-Renderer)这将强制 IE9 以标准模式呈现。

另一种方法是使用另一种文档类型:将其放在代码的顶部:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
于 2012-10-15T10:59:23.760 回答