基于每个页面指定兼容性模式

本文介绍了Windows Internet Explorer 8支持的各种兼容性模式,包括IE5模式、IE7模式、EmulateIE7模式、IE8模式及Edge模式,并详细解释了如何通过META标签或HTTP响应头指定每页或每站点的兼容性模式。
< meta http-equiv=" X-UA-Compatible" content="IE=EmulateIE7" />
2009年09月27日 星期日 上午 09:47
未来兼容性中的 META 标记和锁定

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

对于 Web 开发人员来说,文本兼容性是一个要考虑的重要问题。Windows Internet Explorer 8 引入了文本兼容性模式,该模式允许 Web 开发人员将浏览器设置为以与旧版本相同的方式显示网页,从而允许开发人员选择更新时间。

本文档将介绍由 Windows Internet Explorer 8 支持的文本兼容性模式,以及如何使用自定义标头基于每个页面或每个站点实现这些模式。实现适当的兼容性模式后,可以确保站点与 Windows Internet Explorer 8 及更高版本兼容。

各种兼容性模式

Windows Internet Explorer 8 支持多种兼容性模式,它们可启用不同的受支持的功能,并影响内容的呈现方式。例如,

IE5 模式呈现内容时,像是使用了 Windows Internet Explorer 7 的 Quirks 模式,这与 Windows Internet Explorer 5 显示内容的方式很相似。

IE7 模式呈现内容时,无论页面是否包含 <!DOCTYPE> 指令,都像是使用了 Windows Internet Explorer 7 的标准模式。

EmulateIE7 模式通知 Windows Internet Explorer 使用 <!DOCTYPE> 指令确定如何呈现内容。标准模式指令以 Windows Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。与 IE7 模式不同,EmulateIE7 模式遵循 <!DOCTYPE> 指令。对于多数网站来说,它是首选的兼容性模式。

IE8 模式最大限度地支持行业标准(包括 W3C Cascading Style Sheets Level 2.1 SpecificationW3C Selectors API,并能有限支持 W3C Cascading Style Sheets Level 3 Specification(工作草案)

Edge 模式通知 Windows Internet Explorer 以最高级别的可用模式显示内容,这实际上破坏了“锁定”模式。对于 Windows Internet Explorer 8,这与 IE8 模式是等效的。如果(假定)Windows Internet Explorer 的未来版本支持更高级别的兼容模式,设置为 Edge 模式的页面将显示在由该版本支持的最高级别模式中;但是,当使用 Windows Internet Explorer 8 查看时,这些相同的页面仍将显示在 IE8 模式中。由于在 Windows Internet Explorer 的未来版本中呈现页面内容可能出现意外,建议 Web 开发人员将 Edge 模式仅用于测试页面和其他非生产活动。

基于每个页面指定兼容性模式

要为网页指定文本模式,请使用 META 元素,以在该网页中包含 X-UA-Compatible http-equiv 标头。以下示例指定了 EmulateIE7 模式兼容性。

HTML:
<html>
      <head>
      <!-- Mimic Internet Explorer 7 -->
         <title>我的网页</title>
         <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
      </head>
      <body>
         <p>内容在此处。</p>
      </body>
</html>

Content 属性指定了该页面的模式;例如,要模仿 Windows Internet Explorer 7 的行为,请指定 IE=EmulateIE7。同样,可指定 IE=5、IE=7 或 IE=8 以选择其中一种兼容性模式。您还可以指定 IE=edge 以通知 Windows Internet Explorer 8 使用最高级别的可用模式。

X-UA-compatible 标头不区分大小写;但是,它必须显示在网页中除 TITLE 和其他 META 元素以外的所有元素之前的标头(HEAD 部分)中。

基于每个站点指定兼容模式

通过使用 Web 服务器为站点定义自定义 HTTP 响应标头,可为网站指定文本模式。HTTP 响应标头是 Web 服务器附加到为响应 HTTP 请求而发送到浏览器中的文件的信息,这些信息通常包含发送回文件的日期、大小和类型。

下列文档介绍了将 Web 服务器配置为将自定义 HTTP 响应标头附加到所有网页中所需的步骤。这将导致 Windows Internet Explorer 8 使用指定的文本兼容性模式,例如 EmulateIE7。

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

使用脚本确定文本兼容性模式

要使用 Windows Internet Explorer 8 确定网页的文本兼容性模式,请使用 document 对象的 documentMode 属性。例如,将以下内容键入到 Windows Internet Explorer 8 的地址栏中,可显示当前网页的文本模式。

javascript:alert(document.documentMode);

documentMode 属性可返回与页面的文本兼容性模式相对应的数值。例如,如果所选页面支持 IE8 模式,则 documentMode 会返回 8。

注意:在 Windows Internet Explorer 6 中引入的 compatMode 属性已不受支持,取而代之的是在 Windows Internet Explorer 8 中引入的 documentMode 属性。当前使用 compatMode 的应用程序仍然可以在 Windows Internet Explorer 8 中运行;但是,它们已更新为使用 documentMode。

如果希望使用 JavaScript 确定文本的兼容性模式,请在其中包含支持 Windows Internet Explorer 旧版本的代码,如以下示例所示。

JScript:
engine = null;
if (window.navigator.appName == "Microsoft Internet Explorer")
{
      // 这是一个 IE 浏览器。引擎处于哪种模式下?
      if (document.documentMode) // IE8
         engine = document.documentMode;
      else // IE 5-7
      {
         engine = 5; // 假设为 quirks 模式;除非另外证实是其他模式
         if (document.compatMode)
         {
            if (document.compatMode == "CSS1Compat")
               engine = 7; // 标准模式
         }
      }
      // 引擎变量现在包含文本兼容性模式。
}

此处使用的文档对象表示给定浏览器窗口中的 HTML 文档,可用来检查、修改 HTML 文档或将内容添加到该文档以及处理该文档中的事件。

使用条件注释确定文本兼容性模式

如果只需要适应 Windows Internet Explorer,以下代码示例说明了如何使用条件注释来适用于当前版本或旧版本。

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
      <head>
         <title>测试页</title>
         <meta http-equiv="X-UA-Compatible" content="IE=8"/>
         <!--[if gte IE 8]>
         <style type="text/css">
         body {
          color:#0000ff;
          background-color:#000000;
         }
         </style>
         <![endif]-->
         <!--[if lt IE 8]>
         <style type="text/css">
         body {
          color:#000000;
          background-color:#ffffff;
         }
         </style>
         <![endif]-->
      </head>
      <body>
         <h1>
         <!--[if gte IE 8]>
         第 1 章。
         <![endif]-->
         第一章
         </h1>
         <h1>
         <!--[if gte IE 8]>
         第 2 章。
         <![endif]-->
         第二章
         </h1>
         将看到任何版本的文本。
      </body
<think>首先,用户的问题是基于之前的引用内容:[1], [2], [3], [4]。这些引用讨论了Edge浏览器的兼容性问题,特别是设置兼容模式一个月失效的问题。 用户的问题是:"我想查找edge浏览器设置兼容模式一个月后失效的原因和解决方案 请问edge浏览器设置兼容模式一个月后失效的原因及解决办法" 所以,我需要专注于引用[2]和[4],因为它们直接提到了这个问题。 关键内容: - 引用[2]:解释了通过注册表修改Edge配置来设置兼容模式,但一个月后失效。解决方案是通过注册表永久设置。 - 引用[4]:提供了注册表键值来设置兼容模式InternetExplorerIntegrationLevel和InternetExplorerIntegrationSiteList。 原因:根据引用[2],设置一个月后失效的可能原因是Edge浏览器的更新或策略重置。特别是,如果设置是通过浏览器界面手动添加的,可能会在更新后失效。引用[2]提到:"如果edge版本太低则需要更新,还有用此方法设置之后,在浏览器设置页面手动添加网站的方式将会失效。" 解决方案:引用[2]建议使用注册表方式永久设置。引用[4]提供了注册表路径和键值。 在回答中,我需要: - 使用中文回复。 - 结构清晰,逐步解决问题。 - 遵循系统指令:行内数学表达式用$...$,独立公式用$$...$$(但这里可能不需要数学表达式)。 - 生成相关问题(在末尾)。 - 在引用末尾添加引用标识,如[^2]。 回顾系统指令: - 回答中引用的段落末尾自然地添加引用标识。 - 生成相关问题:在“§§相关问题§§”部分列出。 我的回答结构: 1. **解释原因**:简要说明为什么兼容模式设置会在一个月后失效。 2. **提供解决方案**:一步步给出如何永久设置兼容模式的步骤。 3. **引用来源**:自然地添加引用标识。 4. **生成相关问题**:在最后添加相关问题部分。 原因摘要: - 根据引用[2],失效可能是因为Edge浏览器更新后重置设置,或者手动添加的设置在某些条件下被覆盖。注册表方式更持久。 解决方案步骤: 1. 更新Edge浏览器到最新版本(引用[2])。 2. 使用注册表编辑器修改键值(参见引用[4])。 - 路径:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge - 键值: - "InternetExplorerIntegrationLevel"=dword:00000001 - "InternetExplorerIntegrationSiteList"="file:///c:/edge/site.xml"(用户可以自定义XML文件路径) 3. 确保XML文件存在并包含兼容站点列表。 注意事项: - 修改注册表需要管理员权限。 - 如果使用域控环境,可以通过组策略下发(引用[2])。 - 引用[3]讨论了IP-GUARD兼容性问题,但这可能不直接相关,除非用户提到安全软件。 确保回答真实可靠: - 基于提供的引用,不添加额外信息。 - 聚焦于设置兼容模式失效的问题。 生成相关问题: - 例如: 1. 如何创建和编辑Edge兼容模式的XML文件? 2. 在域控环境中如何设置Edge兼容模式? 3. Edge浏览器更新后兼容模式失效的其他解决方法? 4. 兼容模式在Edge浏览器中的工作原理是什么? 完整回答: - 先回答原因。 - 然后解决方案。 - 最后相关问题。 </think>### Edge浏览器兼容模式设置一个月后失效的原因及解决方案 根据您提供的信息,特别是引用[^2]和[^4],Edge浏览器设置兼容模式Internet Explorer模式)后一个月失效是一个常见问题,通常源于浏览器更新或策略重置导致手动设置被覆盖。以下我将逐步解释原因并提供详细的永久解决方案。解决方案基于注册表修改,确保设置持久有效。 #### 一、失效原因分析 - **主要原因**:当您通过Edge浏览器的设置界面手动添加兼容网站时,这些设置可能因浏览器自动更新或系统策略重置而被清除。Edge浏览器(尤其是Chromium内核版本)默认会将用户配置视为临时设置,并在更新后恢复默认状态[^2]。 - **次要因素**:如果Edge版本过低或存在安全软件冲突(如IP-GUARD等),兼容模式设置可能被覆盖或失效。例如,安全软件注入可能导致浏览器启动失败,间接影响兼容模式[^3]。 - **关键引用**:引用[^2]明确指出:“在浏览器设置页面手动添加网站的方式将会失效”,而注册表修改能永久生效。 #### 二、永久解决方案:通过注册表修改 要永久解决兼容模式失效问题,建议使用注册表编辑器配置策略设置。这需要管理员权限,并创建一个XML文件来定义兼容网站列表。以下是详细步骤: 1. **准备工作:更新Edge浏览器** - 确保Edge浏览器已更新到最新版本(打开Edge > 设置 > 关于Microsoft Edge)。旧版本可能不支持持久配置[^2]。 - 检查是否有安全软件冲突(如IP-GUARD)。如果存在,参考引用[^3]的建议,更新安全软件或添加定制配置(如`hookapi_filterinj_external=msedge.exe`)以避免注入冲突。 2. **创建兼容网站XML文件** - 在本地驱动器(如C盘)创建一个XML文件(例如`C:\edge\site.xml`),列出需要兼容模式的网站。 - 文件内容示例: ```xml <site-list version="1"> <site url="example.com"> <!-- 替换为您的网站 --> <compat-mode>IE11</compat-mode> <!-- 指定IE兼容模式 --> </site> <site url="anothersite.com"/> <!-- 可添加多个网站 --> </site-list> ``` - 说明:`<compat-mode>`设置为`IE11`表示使用Internet Explorer 11引擎。确保XML语法正确(可使用记事本编辑并保存为`.xml`文件)。 3. **修改注册表设置** - 按下`Win + R`打开运行框,输入`regedit`并回车,以管理员身份打开注册表编辑器。 - 导航到路径:`HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge` - 如果路径不存在,右键点击`Microsoft`文件夹 > 新建 > 项,命名为`Edge`。 - 在`Edge`项下,新建或修改以下键值: - **键值1**:右键空白处 > 新建 > DWORD (32位)值,命名为`InternetExplorerIntegrationLevel`。 - 双击该值,设置数值数据为`1`(表示启用IE模式)。 - **键值2**:右键空白处 > 新建 > 字符串值,命名为`InternetExplorerIntegrationSiteList`。 - 双击该值,设置数值数据为XML文件路径(例如`file:///C:/edge/site.xml`)。确保路径使用三斜杠格式(`file:///`)。 - 完成后,注册表应类似引用[^4]的示例。 - **保存并退出**:关闭注册表编辑器,无需重启系统(Edge浏览器会自动应用)。 4. **验证设置** - 打开Edge浏览器,输入`edge://compat`查看兼容模式列表。如果XML文件正确,网站应永久启用IE模式。 - 测试访问网站:确保页面正常加载(如有问题,检查XML语法或路径错误)。 #### 三、注意事项 - **权限要求**:注册表修改需管理员权限。在域控环境中,建议使用组策略下发设置(引用[^2]提到“如果是域控环境则可以通过修改组策略的方式下发策略”),避免逐台配置。 - **失效场景预防**:避免在浏览器设置界面手动添加网站,否则注册表设置可能被覆盖[^2]。定期检查Edge更新和XML文件路径。 - **安全兼容性**:如果浏览器崩溃或启动失败,可能是安全软件冲突(如引用[^3]所述)。优先更新Edge和安全软件到最新版本。 - **备份建议**:修改注册表前,导出备份(文件 > 导出),以防误操作。 通过以上步骤,兼容模式设置将永久生效,不再受每月重置影响。参考来源:[^2], [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值