如何为非IE浏览器编写条件注释?

17

我不想在IE 6/7中使用一些JavaScript插件。 但我希望在所有其他浏览器中使用它们。

我该怎么做? 有没有什么办法可以做到?

3个回答

41

以下内容来自维基百科关于条件注释的文章(已根据您的版本要求进行修改):

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

第一行的奇怪标记是为了使标记符合标准。


有没有办法使非IE浏览器的条件注释与https://validator.w3.org/验证?如果使用这个除了IE或条件注释的变体,它将在关闭标签上抛出虚假注释错误。有没有办法避免这种验证错误? - lowtechsun
确实有。[www.456bereastreet.com/archive/200511/valid_downlevelrevealed_conditional_comments/] (http://www.456bereastreet.com/archive/200511/valid_downlevelrevealed_conditional_comments/) - jkdev
而且我已经在 这里 发布了更详细的信息的问题 / 回答。 - jkdev

6
你的问题最好表述为“使用条件注释来排除IE浏览器中的内容”;-)
尽管条件注释通常用于为IE提供附加内容,但有一种变体允许您防止IE看到内容。由于在他们的世界中所有其他浏览器都不如IE,因此微软选择称其为“downlevel-revealed条件注释”。
类似以下内容:
<![if !IE]><p>You are not using Internet Explorer.</p><![endif]>

应该是你所需要的全部内容。
请注意,将其描述为“条件注释”是微软奇怪用词的又一个例子,他们的用词方式完全取决于他们想要表达的意思,而不是其他人的意思:上述代码之所以有效,是因为它实际上并不是注释,因此除了IE浏览器之外的所有浏览器都会假定你在HTML中犯了一个可怕的错误,并继续解析其中的内容。
这也意味着它在使用application/xhtml+xml内容类型提供的XHTML中可能会遭遇严重失败,但那是另一回事。

这是针对除IE之外的所有其他浏览器的,但是IE>7怎么办?而且,标记不是有效的HTML,因此在任何非IE浏览器中的行为都是未指定的。 - Jørn Schou-Rode
3
这个条件适用于IE 8及以上版本。至于无效的标记和未指定的后果:你还能期望微软做什么呢?;-) - NickFitz

0

有一个非常好的资源可以用来处理这些问题: http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

结合 @_jscript_version 变量,这将帮助您实现所需的结果。(您需要在谷歌上搜索“版本信息(Windows脚本-JScript)”,以获取JScript-> IE版本查找,因为我只能作为新用户嵌入一个链接。) :-(


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接