internet-explorer - IE 条件注释和 Chrome/Firefox

标签 internet-explorer firefox google-chrome rendering conditional-comments

我正在使用以下 IE 条件注释:

<!--[if gt IE 7]>
Here is some code.
<![endif]-->

这可以很好地防止代码在任何低于 8 的 IE 中呈现。
但是,这也会阻止代码在 Chrome 和 Firefox 中呈现。

关于为什么会发生这种情况的任何想法,以及如何让代码在 IE 以外的浏览器中呈现?

最佳答案

条件注释是 Microsoft IE 特定的规则,它们不是任何标准的一部分。如果您检查条件注释的结构:

<!--[if gt IE 7]>
Here is some code.
<![endif]-->

正如它的名字所暗示的,这只是一个大评论<!-- comment --> . IE 会检查注释中的条件是否符契约(Contract)样不符合 HTML 标准的条件。

要创建不在 IE 中呈现但在其他浏览器中呈现的代码,请使用以下条件:
<!--[if !IE]> -->
This will be rendered by anything but IE.
<!-- <![endif]-->

看看条件是如何包含在封闭的评论中的?这就是为什么它在普通浏览器中呈现,而 IE 检查条件,并决定忽略所有内容,直到 endif .

编辑

如果您想添加另一个条件,并继续在非 IE 浏览器上呈现代码,您可以使用以下解决方法:
<!--[if gt IE 7]> <!-- -->
Here is some code for anything but IE 7 and below.
<!-- <![endif]-->

注意我不得不再次使用打开评论以防止 IE 呈现 -->在代码之前。其他浏览器仍会将其视为评论的一部分。

关于internet-explorer - IE 条件注释和 Chrome/Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159642/

相关文章:

html - 按钮内的图像在 Firefox 中未正确定位

css - 如何在 IE 中使用背景大小?

.net - 如何使用 IE8/IE9 通过远程加载的 DLL(无需事先注册)部署 C# ActiveX 对象,然后使用 javascript 访问它?

internet-explorer - 调试器在 IE 11 F12 开发者工具中不起作用

javascript - 如何将非常大的内存对象保存到文件中?

javascript - 关于 jQuery 中 window.unload 的一些(奇怪?)问题

html - Safari/Chrome flex-parent 100% height + padding 和 100% height child

javascript - getSelection() 在 IE 中不起作用

firefox - 在 Firefox 中转换 SVG 的原点

Javascript 常规异常在 Chrome 和 Firefox 中每两次尝试匹配一次字符串