【问题标题】:IE Compatibility mode cannot be disabled with Apache vhost config无法使用 Apache vhost 配置禁用 IE 兼容模式
【发布时间】:2011-01-14 12:03:19
【问题描述】:

我在尝试禁用 IE 的兼容模式时遇到了一个大问题。

经过多次头疼后,我已将问题追溯到该站点是作为 Apache 的默认配置还是作为虚拟主机提供的。

我知道当我使用“localhost”域访问站点时,一切都很好。只要我通过在虚拟主机中配置的域访问同一页面 - 站点就会以兼容模式呈现。

谁能解释一下这个疯狂的问题???

不能将网站作为默认主机提供服务。

  • 院长

【问题讨论】:

  • 第一步是使用像 Firebug 这样的工具来查看 Apache 在这两种情况下发出的响应标头。 AFAIK,对于兼容模式,Apache 必须发送 X-UA-Compatible 标头
  • 两种情况下的标题相同。我目前使用的技术是标题中的 标记。我也尝试在 apache 配置中设置标题。结果相同。
  • @user 听起来很奇怪,除非这是一些深奥的 IE 规则,localhost 域名得到不同的处理...编辑:啊,我是对的!看我的回答。
  • 嘿,这几天我用的不是很奇怪这个词...

标签: html apache internet-explorer


【解决方案1】:

啊哈!

来自here(强调我的):

如今,许多行业网站都支持 Internet Explorer 7。为了保持兼容性,Internet Explorer 8 附带了基于区域评估的智能默认值。在默认状态下,公共 Internet 上的所有网站均以 Internet Explorer 8 标准模式(兼容性视图关闭)显示,所有 Intranet 网站均以 Internet Explorer 7 标准模式(兼容性视图打开)显示。

...

如果您导航到本地 Intranet 上的站点,例如 http://myPortalhttp://sharepoint/sites/mySite,Internet Explorer 8 会使用用户代理字符串“7”、版本向量“7”来标识自己,并显示触发标准模式的网页在 Internet Explorer 7 标准模式下。这种组合允许在 Internet Explorer 7 中正常运行的网页在 IE8 中继续运行。

我没有对此发表评论。我敢肯定这有一些很好的现实原因,但我仍然有想用头撞桌子的冲动。

【讨论】:

  • 出色的工作。就是这样。似乎这里的一些 IE 浏览器总是将相关站点归类为 Intranet。
  • 我发现你可以通过在元标记中插入这个来覆盖这个“特征”:
【解决方案2】:

当网站在本地 intranet 上提供服务时,Internet Explorer 将(默认情况下)切换到 IE7 兼容模式。

您可以通过在页面中包含X-UA-Compatible 响应标头来禁用此“IE7 在内网兼容模式”

HTTP/1.1 200 OK
X-UA-Compatible: IE=8

您还可以通过在文档的HEAD> 中包含meta http-equiv 元素,将http 响应头的等效 添加到您的页面。例如:

<!DOCTYPE html>
<html>
   <head>
   <title>Hello world!</title>
   <meta http-equiv="X-UA-Compatible" content="IE=9">
   </head>
<body>

</body>
</html>

注意:如果您确实包含标题

| Header           | Value   |
|------------------|---------|
| X-UA-Compatible  | IE=10   |

在您的 html 文档中,您必须在 HEAD 中将其添加到足够高的位置,然后才会发生锁定文档模式的其他事情 - 并且您被锁定到 IE7。

错误示例 1

<!DOCTYPE html>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<html lang="en">
<head>

meta 元素属于head 元素内

错误示例 2

<!DOCTYPE html>
<html lang="en">
<head>
   <title>Hello, world!</title>
   <link rel="stylesheet" type="text/css" media="all" href="main-73c2257f2d.css" />
   <meta http-equiv="X-UA-Compatible" content="IE=8">

X-UA-Compatible 元素必须首先出现在head 中;除了title 和其他meta 元素。

X-UA-Compatible 标头不区分大小写;但是,它必须出现在网页的标题(HEAD 部分)中,位于除标题元素和其他元元素之外的所有其他元素之前。

错误示例 3

<!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 http-equiv="X-UA-Compatible" content="IE=10">

条件句将浏览器锁定到 IE7 模式。删除它们。

正确

<!doctype html>
<head>
   <title>Hello, world!</title>
   <meta http-equiv="X-UA-Compatible" content="IE=10">

【讨论】:

    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 2011-04-17
    • 2014-08-01
    • 1970-01-01
    • 2015-10-20
    • 2020-10-01
    • 2011-10-02
    • 2013-07-30
    相关资源
    最近更新 更多