我无法理解HTML5样板中的IE条件注释中的一个位置。 这是关于这一部分:
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
以下两种情况非常简单,
<!-- -->
; <!--[if gt IE 8]><!-->
”和“<!--<![endif]-->
”是标准的HTML注释。所以它输出<html class="no-js">
; 令我困惑的是IE9的情况。 在IE9的情况下,条件“如果gt IE 8”为TRUE,所以它输出IE条件的主体:
<!--> <html class="no-js"> <!--
<!-->
是空的评论; <html class="no-js">
是常规HTML输出; 但结尾“<!--
”呢?怎么处理?在我看来,这个开始的评论标记会将其后面的所有内容转换为评论,直到它遇到结束标记“-->
”。这不是一个大问题吗?
但我从来没有见过有人对此提出质疑。我错过了什么吗? 有人可以向我解释一下吗?任何帮助表示赞赏。
答案 0 :(得分:2)
对于IE9,条件“如果gt IE 8”为TRUE
确实 - 所以会发生什么,而IE的其他版本的评论是这样的:
<!--[if not my version]>
Remove/ignore everything
<![endif]-->
或者简单地说:
""
对于IE9,条件注释的处理方式与其他注释一样:
<!--[if gt IE 8]><!-->
<html class="no-js">
<!--<![endif]-->
即(爆炸的)第一行和最后一行是完整的评论本身
<!--[if gt IE 8]><!-->
^ start of a comment
^.............^ content not relevant
^ end of a comment - first occurrence of `-->`
因此浏览器(无论是IE9 +还是非Internet Explorer)只能看到:
<html class="no-js">
答案 1 :(得分:0)
我无法指出他们如何解析这些问题的任何实际参考(CC总是被稀疏记录)并且不记得是谁提出了这种模式,但IE没有通过<!--> <html class="no-js"> <!--
它已通过仅<html class="no-js">
它将每个完整有效的注释块组合为条件注释的开头和结尾。
这是一个示例,显示它未通过公开评论
http://htmlcssjavascript.com/samples/cc.html
<!--[if IE 8]> <p>IE8</p> <![endif]-->
<!--[if gt IE 8]><!--> <p>IE9+</p> <!--<![endif]-->
Not an open comment
-->
那输出......
“IE9 +
不是公开评论 - &gt;“
在IE9中。如果它留下评论开放,那么“Not a open comment”位将消失。