Internet Explorer 10 不再尝试阅读条件注释。这意味着它将像任何其他浏览器一样处理条件注释:作为常规 HTML 注释,意味着完全被忽略。以问题中给出的标记为例,包括 IE10 在内的所有浏览器都将完全忽略注释部分,以灰色突出显示。HTML5 标准没有提到条件注释语法,这正是他们选择在 IE10 中停止支持它的原因。
但是请注意,仍然支持 JScript 中的条件编译,如评论和更新的答案所示。与jQuery.browser
. _ 当然,毫无疑问,用户代理嗅探仍然像以往一样脆弱,在任何情况下都不应该使用。
如果您确实必须以 IE10 为目标,请使用可能在不久的将来仍会得到支持的条件编译,或者 - 如果您能提供帮助 - 使用诸如Modernizr之类的功能检测库来代替(或结合使用)浏览器检测。除非您的用例需要 noscript 或在服务器端容纳 IE10,否则用户代理嗅探将比可行的选项更令人头疼。
听起来很麻烦,但请记住,作为高度符合当今 Web 标准的现代浏览器1,假设您编写了高度符合标准的可互操作代码,除非绝对必要,否则您不应该为 IE10 预留特殊代码,即它应该在行为和渲染方面类似于其他浏览器。2考虑到 IE 的历史,这听起来有些牵强,但您有多少次期望 Firefox 或 Chrome 以同样的方式运行,结果却令人沮丧?
如果您确实有正当理由针对某些浏览器,请务必使用提供给您的其他工具来嗅出它们。我只是说你今天会比以前更难找到这样的理由,而且这真的不是你可以依赖的东西。
1 不仅是 IE10,IE9,甚至 IE8 对大多数成熟的 CSS2.1 标准的处理都比 Chrome 好得多,仅仅是因为 IE8 非常注重标准合规性(当时 CSS2.1 已经相当稳定,只有很小的差异根据今天的推荐),而 Chrome 似乎只是尖端伪标准的半抛光技术演示。
2 我说这话时可能有偏见,但确实如此。如果您的代码可以在其他浏览器中运行,但不能在 IE 中运行,那么与 3 年前使用以前版本的 IE 相比,您自己的代码而不是 IE10 出现问题的可能性要好得多。再说一次,我可能有偏见,但说实话:你不是吗?只看你的评论。