fbpx
维基百科

条件注释

条件注释conditional comment)是于HTML源码中被 Microsoft Internet Explorer 有条件解释的语句。条件注释可被用来向 Internet Explorer 提供及隐藏代码。

条件注释最初于微软Internet Explorer 5浏览器中出现,并且直至 Internet Explorer 9 均支持。[1]微软已宣布于 Internet Explorer 10 中以标准模式处理页面 - 如 HTML5 - 时停止支持,但是旧版网页使用这种技术(于兼容性视图)将继续有效。[2]JScript 条件注释于 Internet Explorer 4 中被引进,而在 Internet Explorer 10 中继续受支持,无论于标准模式或者兼容性模式之中,但在 Windows 应用商店应用程序中不受支持。[3]

示例 编辑

这里是一个演示条件注释如何工作的简单示例。

<!--[if IE 6]> <p>You are using Internet Explorer 6.</p> <![endif]--> <!--[if !IE]><!--> <p>You are not using Internet Explorer.</p> <!--<![endif]-->

句法 编辑

有两种「条件注释」:下层显示 (downlevel revealed)下层隐藏(downlevel hidden)

每种注释的基本句法如下表所示。第一条展示的是基本的 HTML 注释,被包括在内作为比较以及用以说明被每种条件注释使用的不同句法。

注释类型 句法或可能取值
标准 HTML 注释 <!-- Comment content  -->
downlevel-hidden <!--[if expression]> HTML <![endif]-->
downlevel-revealed <![if expression]> HTML <![endif]>

于每个条件注释之中的句法块内的 HTML 表示任意的 HTML 内容块,包括脚本。两种条件注释均使用条件表达式以指示注释块内的内容应该被解析还是被忽略。条件表达式由特性,操作符,和/或决定于其特性的值组成。下表展示了支持的特性并描述了每种特性支持的值。

项目 示例 说明
IE [if IE] 字符串 "IE" 是一种对应于用以浏览网页的 Internet Explorer 的版本的一种特性
value [if IE 7] 一个对应于浏览器版本的整数或浮点数。返回一个布尔值,版本号和浏览器版本相匹配时为 true。更多信息参见版本向量英语Version vector
WindowsEdition [if WindowsEdition] 适用于 Windows 7 上的 Internet Explorer 8。字符串 "WindowsEdition" 是一种对应于用以浏览该网页的 Microsoft Windows 版本的特性
value [if WindowsEdition 1] 一个对应于用以浏览该网页的 Windows 的版本的整数。返回一个布尔值,数值和使用的版本相匹配时为真 true。关于所支持的值和它们所描述的版本的更多信息,参见GetProductInfo 函数的 pdwReturnedProductType 参数。
true [if true] 永远等价于 true.
false [if false] 永远等价于 false.

可用于创造条件注释的算符如下表。

项目 示例 说明
! [if !IE] NOT 运算符。这被放在 特性, 算符, 或者 子表达式 的前面以反转该表达式的布尔值含义。
lt [if lt IE 5.5] 小于运算符。第一项小于第二项时返回 true。
lte [if lte IE 6] 小于或等于运算符。第一项小于或等于第二项时返回 true。
gt [if gt IE 5] 大于运算符。第一项大于第二项时返回 true。
gte [if gte IE 7] 大于或等于运算符。第一项大于或等于第二项时返回 true。
( ) [if !(IE 7)] 子表达式运算符。用以连接布尔算符以创造更加复杂的表达式。
& [if (gt IE 5)&(lt IE 7)] AND 运算符。所有子表达式为真时返回 true。
| [if (IE 6)|(IE 7)] OR 运算符。子表达式任意一个为真时返回 true。

下层隐藏的条件注释 编辑

如下是两个「下层隐藏」条件注释的示例。

<!--[if IE 8]> <link href="ie8only.css" rel="stylesheet"> <![endif]-->

或者

<!--[if lte IE 7]> <style> /* CSS here */ </style> <![endif]-->

第一个示例中的指令将会让 IE 8 读取指定的 CSS 文件,而 IE 7 或者其它版本的 IE 将会忽略它。非 IE 的浏览器同样会把它忽略因为它看起来像一条标准的 HTML 注释。第二条示例里的标记将会让 IE 5 至 7 读取其内的 CSS 样式。通过对这种标记的不同的使用你也可以挑出 IE 6, IE 5 或者比指定版本更新(大)或更旧(小)版本的 IE。

下层显示的条件注释 编辑

如下是一个「下层显示」条件「注释」的示例,它除了误导向的名字之外,根本不是一个 (X)HTML 注释,使用默认的微软语法:

<![if !IE]> <link href="non-ie.css" rel="stylesheet"> <![endif]>

这个示例展示了应该仅对非 IE 浏览器暴露的内容,由于该条件对 IE 为假(并且因此该内容被忽略),而这些标签自身在非 IE 浏览器中是无法识别的(并因此被忽略)。这不是有效的 HTML 或 XHTML。

微软承认这种句法不是标准化的标记,[4]意图是这些标记被其它浏览器忽视并暴露其中的内容。为了确保与 W3C 标准的兼容,一些网页开发者使用了下层显示的条件注释的一种替代性的技巧。[5]

<!--[if !IE]>--> <link href="non-ie.css" rel="stylesheet"> <!--<![endif]-->

虽然结构上有些令人困惑,这种具体的句法是有效的 (X)HTML 且对为非 IE 浏览器准备的有条件的片段是有用的;但如果其中的条件等价于 true(例如,如果写意图在非 IE 浏览器和一些版本的 IE 上显示的代码),IE 将会显示于 HTML 内容前出现的「-->」。这个问题通过对原来的「-->」之前加一个「<!」很容易解决,如下所示:

<!--[if gt IE 6]><!--> This code displays on non-IE browsers and on IE 7 or higher. <!--<![endif]-->

这个额外的「<!」被非 IE 的浏览器忽略;它同样会被 IE 忽略而无论条件,因为如果为假,条件注释里面的一切都会被忽略,而如果为真,导致的标签 <!--> 是一条空注释并因此被忽略。

这个方法尽管在目前(截至 IE 9)版本的 Internet Explorer 中仍然有用,无法保证未来的版本将会继续如此工作(Internet Explorer 10 已取消条件注释的支持)。

JScript 中的条件注释 编辑

Internet Explorer 4 开始,存在一种于 JScript 之中加入条件注释的类似的专有的机理,名称是条件编译。[6] 代码示例:

<script> /*@cc_on  document.write("You are using IE4 or higher"); @*/ </script> 

同样有一些预定义的变量,[7]尽管随着微软改变 XP SP3 上的 IE 6 的 JScript 引擎,[8]这些不再可以依赖,现在它如下所示:

@_jscript_version == 5.7 

其结果是,利用条件编译侦测 IE 6 的方法如下:

<script> /*@cc_on  @if (@_jscript_version == 10)  document.write("You are using IE10");  @elif (@_jscript_version == 9)  document.write("You are using IE9");    @elif (@_jscript_version == 5.8)  document.write("You are using IE8");    @elif (@_jscript_version == 5.7 && window.XMLHttpRequest)  document.write("You are using IE7");  @elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))  document.write("You are using IE6");  @elif (@_jscript_version == 5.5)  document.write("You are using IE5.5");  @else  document.write("You are using IE5 or older");  @end @*/ </script> 

参考文献 编辑

  1. ^ . Microsoft Corporation. [2012-03-06]. (原始内容存档于2008-10-13). 
  2. ^ Microsoft - HTML5 Parsing in IE10. [2012-03-06]. (原始内容于2011-07-08). 
  3. ^ 条件编译 (JavaScript), MSDN. [2013-03-26]. (原始内容于2013-08-31). 
  4. ^ . [2007-01-03]. (原始内容存档于2007-01-03). 
  5. ^ . [2012-03-07]. (原始内容存档于2014-08-19). 
  6. ^ . Microsoft Corporation. [2012-03-08]. (原始内容存档于2008-09-06). 
  7. ^ Conditional Compilation Variables. [2012-03-08]. (原始内容于2016-08-10). 
  8. ^ Detecting IE7+ in JavaScript. [2012-03-08]. (原始内容于2019-09-05). 

参见 编辑

条件注释, conditional, comment, 是于html源码中被, microsoft, internet, explorer, 有条件解释的语句, 可被用来向, internet, explorer, 提供及隐藏代码, 最初于微软的, internet, explorer, 5浏览器中出现, 并且直至, internet, explorer, 均支持, 微软已宣布于, internet, explorer, 中以标准模式处理页面, html5, 时停止支持, 但是旧版网页使用这种技术, 于兼容性视图,. 条件注释 conditional comment 是于HTML源码中被 Microsoft Internet Explorer 有条件解释的语句 条件注释可被用来向 Internet Explorer 提供及隐藏代码 条件注释最初于微软的 Internet Explorer 5浏览器中出现 并且直至 Internet Explorer 9 均支持 1 微软已宣布于 Internet Explorer 10 中以标准模式处理页面 如 HTML5 时停止支持 但是旧版网页使用这种技术 于兼容性视图 将继续有效 2 JScript 条件注释于 Internet Explorer 4 中被引进 而在 Internet Explorer 10 中继续受支持 无论于标准模式或者兼容性模式之中 但在 Windows 应用商店应用程序中不受支持 3 目录 1 示例 2 句法 2 1 下层隐藏的条件注释 2 2 下层显示的条件注释 2 3 JScript 中的条件注释 3 参考文献 4 参见示例 编辑这里是一个演示条件注释如何工作的简单示例 lt if IE 6 gt lt p gt You are using Internet Explorer 6 lt p gt lt endif gt lt if IE gt lt gt lt p gt You are not using Internet Explorer lt p gt lt lt endif gt 句法 编辑有两种 条件注释 下层显示 downlevel revealed 和下层隐藏 downlevel hidden 每种注释的基本句法如下表所示 第一条展示的是基本的 HTML 注释 被包括在内作为比较以及用以说明被每种条件注释使用的不同句法 注释类型 句法或可能取值标准 HTML 注释 lt Comment content gt downlevel hidden lt if expression gt HTML lt endif gt downlevel revealed lt if expression gt HTML lt endif gt 于每个条件注释之中的句法块内的 HTML 表示任意的 HTML 内容块 包括脚本 两种条件注释均使用条件表达式以指示注释块内的内容应该被解析还是被忽略 条件表达式由特性 操作符 和 或决定于其特性的值组成 下表展示了支持的特性并描述了每种特性支持的值 项目 示例 说明IE if IE 字符串 IE 是一种对应于用以浏览网页的 Internet Explorer 的版本的一种特性 value if IE 7 一个对应于浏览器版本的整数或浮点数 返回一个布尔值 版本号和浏览器版本相匹配时为 true 更多信息参见版本向量 英语 Version vector WindowsEdition if WindowsEdition 适用于 Windows 7 上的 Internet Explorer 8 字符串 WindowsEdition 是一种对应于用以浏览该网页的 Microsoft Windows 版本的特性 value if WindowsEdition 1 一个对应于用以浏览该网页的 Windows 的版本的整数 返回一个布尔值 数值和使用的版本相匹配时为真 true 关于所支持的值和它们所描述的版本的更多信息 参见GetProductInfo 函数的 pdwReturnedProductType 参数 true if true 永远等价于 true false if false 永远等价于 false 可用于创造条件注释的算符如下表 项目 示例 说明 if IE NOT 运算符 这被放在 特性 算符 或者 子表达式 的前面以反转该表达式的布尔值含义 lt if lt IE 5 5 小于运算符 第一项小于第二项时返回 true lte if lte IE 6 小于或等于运算符 第一项小于或等于第二项时返回 true gt if gt IE 5 大于运算符 第一项大于第二项时返回 true gte if gte IE 7 大于或等于运算符 第一项大于或等于第二项时返回 true if IE 7 子表达式运算符 用以连接布尔算符以创造更加复杂的表达式 amp if gt IE 5 amp lt IE 7 AND 运算符 所有子表达式为真时返回 true if IE 6 IE 7 OR 运算符 子表达式任意一个为真时返回 true 下层隐藏的条件注释 编辑 如下是两个 下层隐藏 条件注释的示例 lt if IE 8 gt lt link href ie8only css rel stylesheet gt lt endif gt 或者 lt if lte IE 7 gt lt style gt CSS here lt style gt lt endif gt 第一个示例中的指令将会让 IE 8 读取指定的 CSS 文件 而 IE 7 或者其它版本的 IE 将会忽略它 非 IE 的浏览器同样会把它忽略因为它看起来像一条标准的 HTML 注释 第二条示例里的标记将会让 IE 5 至 7 读取其内的 CSS 样式 通过对这种标记的不同的使用你也可以挑出 IE 6 IE 5 或者比指定版本更新 大 或更旧 小 版本的 IE 下层显示的条件注释 编辑 如下是一个 下层显示 条件 注释 的示例 它除了误导向的名字之外 根本不是一个 X HTML 注释 使用默认的微软语法 lt if IE gt lt link href non ie css rel stylesheet gt lt endif gt 这个示例展示了应该仅对非 IE 浏览器暴露的内容 由于该条件对 IE 为假 并且因此该内容被忽略 而这些标签自身在非 IE 浏览器中是无法识别的 并因此被忽略 这不是有效的 HTML 或 XHTML 微软承认这种句法不是标准化的标记 4 意图是这些标记被其它浏览器忽视并暴露其中的内容 为了确保与 W3C 标准的兼容 一些网页开发者使用了下层显示的条件注释的一种替代性的技巧 5 lt if IE gt gt lt link href non ie css rel stylesheet gt lt lt endif gt 虽然结构上有些令人困惑 这种具体的句法是有效的 X HTML 且对为非 IE 浏览器准备的有条件的片段是有用的 但如果其中的条件等价于 true 例如 如果写意图在非 IE 浏览器和一些版本的 IE 上显示的代码 IE 将会显示于 HTML 内容前出现的 gt 这个问题通过对原来的 gt 之前加一个 lt 很容易解决 如下所示 lt if gt IE 6 gt lt gt This code displays on non IE browsers and on IE 7 or higher lt lt endif gt 这个额外的 lt 被非 IE 的浏览器忽略 它同样会被 IE 忽略而无论条件 因为如果为假 条件注释里面的一切都会被忽略 而如果为真 导致的标签 lt gt 是一条空注释并因此被忽略 这个方法尽管在目前 截至 IE 9 版本的 Internet Explorer 中仍然有用 无法保证未来的版本将会继续如此工作 Internet Explorer 10 已取消条件注释的支持 JScript 中的条件注释 编辑 自 Internet Explorer 4 开始 存在一种于 JScript 之中加入条件注释的类似的专有的机理 名称是条件编译 6 代码示例 lt script gt cc on document write You are using IE4 or higher lt script gt 同样有一些预定义的变量 7 尽管随着微软改变 XP SP3 上的 IE 6 的 JScript 引擎 8 这些不再可以依赖 现在它如下所示 jscript version 5 7 其结果是 利用条件编译侦测 IE 6 的方法如下 lt script gt cc on if jscript version 10 document write You are using IE10 elif jscript version 9 document write You are using IE9 elif jscript version 5 8 document write You are using IE8 elif jscript version 5 7 amp amp window XMLHttpRequest document write You are using IE7 elif jscript version 5 6 jscript version 5 7 amp amp window XMLHttpRequest document write You are using IE6 elif jscript version 5 5 document write You are using IE5 5 else document write You are using IE5 or older end lt script gt 参考文献 编辑 About Conditional Comments Microsoft Corporation 2012 03 06 原始内容存档于2008 10 13 Microsoft HTML5 Parsing in IE10 2012 03 06 原始内容存档于2011 07 08 条件编译 JavaScript MSDN 2013 03 26 原始内容存档于2013 08 31 MSDN About Conditional Comments 2007 01 03 原始内容存档于2007 01 03 Valid downlevel revealed conditional comments 456 Berea Street 2012 03 07 原始内容存档于2014 08 19 Conditional Compilation Microsoft Corporation 2012 03 08 原始内容存档于2008 09 06 Conditional Compilation Variables 2012 03 08 原始内容存档于2016 08 10 Detecting IE7 in JavaScript 2012 03 08 原始内容存档于2019 09 05 参见 编辑CSS filter 取自 https zh wikipedia org w index php title 条件注释 amp oldid 69341538, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。