这个 IE 条件 hack 的目的是什么?

What is the intent of this IE-conditional hack?

你能告诉我 IE 浏览器应该发生什么吗?

<!DOCTYPE html><!--[if lt IE 9]><html class="no-js lt-ie9" lang="en" dir="ltr"><![endif]--><!--[if gt IE 8]><!-->
<html class="no-js" lang="en" dir="ltr">
<!--<![endif]-->
<head>
...

我能理解非IE浏览器只会解释:

<html class="no-js" lang="en" dir="ltr">

但是大于 IE8 的条件没有多大意义:

<!--[if lt IE 9]> ... <!--[if gt IE 8]><!-->
<html class="no-js" lang="en" dir="ltr">
<!--<![endif]-->

这是黑客攻击吗?开始和结束评论的符号不匹配。

额外的 !-- 位使其成为有效的 HTML 评论,这样验证者就不会抱怨虚假评论。更多关于 here and 。非 IE 浏览器真正看到的是两个常规 HTML 评论,分别包含 [if gt IE 8]><!<![endif]

条件注释允许 IE8 以上的浏览器看到 <html> 标签。正如您正确指出的那样,非 IE 浏览器也将使用相同的 <html> 标记 — !-- 位允许它们这样做。我不会称它为 hack,但话又说回来,条件注释 本身 可能是 hack,这取决于你问的是谁(我当然不这么认为)。