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的问题的可能性要大得多。再说一次,我可能有偏见,但老实说:你不是吗?只要看看你的评论。