X-UA-Compatible失效问题

有时候发现页面中写了<meta http-equiv="X-UA-Compatible" content="IE=8" />,但是文档模式依旧没改变;

原因:

1、DOCTYPE声明

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

(<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">这种声明发现不好使,估计版本过低了)

2、为防止失效,X-UA-Compatible最好紧跟在head之后,之前不要有任何不标准的标签。

(X-UA-compatible 标头不区分大小写;不过,它必须显示在网页中除 title 元素和其他 meta 元素以外的所有其他元素之前的标中)

 保险起见最好是这种开头:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html> 
  <head>  
    <meta http-equiv="X-UA-Compatible" content="IE=8" />

 3、最近试验,发现更有效的方法,直接将X-UA-Compatible申明在文件最开始部分(1、2都可以忽略了 O(∩_∩)O)

  <meta http-equiv="X-UA-Compatible" content="IE=8" />
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html> 
    <head> 

其他方案:

https://msdn.microsoft.com/library/cc817573.aspx

在 Apache 上实现 META 切换

注意 :本文档是预备文档,随时可能变更。

Windows Internet Explorer 8 引入了文本兼容性模式,该模式允许 Web 开发人员将浏览器设置为以与旧版本相同的方式呈现它们的页面。可以根据不同的页面或不同的站点指定兼容性模式。

本文档介绍了如何通过在 Apache 中使用自定义标头,对每个站点实现 Windows Internet Explorer 8 支持的一种很常见的文本兼容性模式 — EmulateIE7。

有关 Windows Internet Explorer 8 支持的不同兼容性模式以及如何根据不同页面实现兼容性模式的详细信息,请参阅未来兼容性中的 META 标记和锁定

指定自定义 HTTP 响应标头

使用 Apache Web 服务器为站点定义自定义标头即可为您的网站指定文本模式。以下自定义 HTTP 标头可强制 Windows Internet Explorer 8 以类似 Windows Internet Explorer 7 呈现网页的方式呈现网页。

X-UA-Compatible:IE=EmulateIE7:

Apache 2.2

若要使用 Apache 2.2 为您的站点指定 HTTP 响应标头,您可使用 mod_headers 模块提供的 Header 指令。Header 指令几乎可出现在各种配置文件的任意位置,但主配置文件是 httpd.conf。可通过在配置部分将它们括起来以限制其范围,如<Location><Directory><Files> 和 <VirtualHost>

在 httpd.conf 中添加该指令后,由您的服务器发送的属于该范围内的所有页面都将包含 X-UA-Compatible HTTP 响应标头。这将强制 Windows Internet Explorer 8 使用 EmulateIE7 模式来呈现您的页面。

首先,需要确保服务器初始化期间加载了 headers_module。在 httpd.conf 文件中,通过删除 headers_module 的 LoadModule 行开始处的“#”,取消对该行的注释。您可以使用文本编辑器(如 Notepad)来执行此操作。完成后,该行应如下所示。

LoadModule headers_module modules/mod_headers.so

若要将该标头添加到服务器上的所有页面,请将以下行添加到 httpd.conf 文件的 LoadModule 行之后。

Header set X-UA-Compatible “IE=EmulateIE7”

一般不需要将标头应用到服务器上的每个页面。<Location> 指令可用于更改 Web 空间中的内容配置,以文本根目录为基点。例如,以下配置可将 HTTP 标头应用到任何以 /store 开头的 URL 路径。它将应用于针对 http://yoursite.com/store 和 http://yoursite.com/store/file.html 的请求以及任何以 /store 字符串开头的其他请求。

<Location /store>
Header set X-UA-Compatible “IE=EmulateIE7”
</Location> 

页面覆盖

如果使用 Web 服务器指定了默认文本兼容性模式,则可通过在特定的网页中指定其他文本兼容性模式来覆盖该设置。在该网页中指定的模式优先于由服务器指定的模式。

有关如何使用指令配置选项的更多深入信息,请参阅 <Location><Directory><Files> 和 <VirtualHost>。有关 Header 指令以及如何在配置部分使用该指令的详细信息,请参阅下列文档。

旧版本

下列链接提供了有关如何使用旧版本的 Apache Web 服务器将自定义 HTTP 响应标头添加到站点的详细信息。

自定义 HTTP 响应标头和其他 Web 服务器

有关 Windows Internet Explorer 8 文本兼容性模式和 Internet Information Services (IIS) Web 服务器的详细信息,请参阅在 IIS 上实现 META 切换

posted @ 2016-06-02 17:35  【云】风过无痕  阅读(1288)  评论(0编辑  收藏  举报