【问题标题】:Prevent compatibility view mode in IE for Intranet sites with server settings?在 IE 中使用服务器设置阻止 Intranet 站点的兼容性视图模式?
【发布时间】:2012-11-19 00:53:51
【问题描述】:

我正在构建一个托管为 Intranet 的站点。我需要它不在 IE 的兼容性视图中。

显然,IE 默认设置为始终以兼容性视图模式显示 Intranet 站点。我尝试过使用元标记、标准 xhtml dom,但似乎没有什么能够强制关闭兼容模式。唯一的方法是让用户转到工具/兼容性视图设置/并取消选中“在兼容性视图中显示 Intranet 站点”。

有没有办法使用服务器设置强制关闭 Intranet 站点中的兼容性视图?

我试过了:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>TEST</title>
</head>
<body> 
    test
</body>
</html>

和,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TEST</title>
</head>
<body> 
    test
</body>
</html>

和,

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

【问题讨论】:

  • 如果不手动更改浏览器中的配置设置,您将无法阻止 IE 执行此操作。微软再次让生活变得艰难。 :-(
  • 它仍然使用兼容模式:
  • 是的。正如我所说,您必须更改浏览器中的设置。

标签: internet-explorer cross-browser


【解决方案1】:

您的第一个示例应该可以工作。但是请注意,IE 仍会将 IE7 User-Agent 标头发送到服务器,因此您不应该对 IE 版本进行服务器端检测。另外在测试时,您需要在更改代码时清除缓存并重新启动浏览器,因为 IE 会尝试记住您网站上次使用的兼容性视图设置,而不是读取 X-UA-Compatible 值。

【讨论】:

    【解决方案2】:

    请参阅Override intranet compatibility mode IE8,它告诉您修改 http 标头,而不是指定元标记。给出了如何在 ASP.Net web.config 文件中执行此操作的示例。

    或者,您可以在 Web 服务器配置中指定自定义标头。例如,在 IIS 7.5 中,

    1. 您导航到要重新配置的网站;
    2. 查找条目HTTP 响应标头
    3. 添加名称:“X-UA-Compatible”和值:“IE=Edge”的设置。

    如果您的网站是 ASP.Net Web 应用程序,这两种方法将相互复制。也就是说,第二种方法实际上会更新web.config文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-23
      • 2014-04-11
      • 1970-01-01
      • 2015-02-18
      • 2019-03-06
      • 1970-01-01
      • 2013-08-01
      • 2015-05-05
      相关资源
      最近更新 更多