3

HTML5 ボイラープレートの IE 条件付きコメントの 1 か所が理解できませんでした。それはこの部分についてです:

<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->

次の 2 つのケースは非常に簡単です。

  1. IE6/7 の場合、「if gt IE 8」という条件が FALSE なので、出力します<!-- -->
  2. 非 IE の場合、"[if gt IE8]" と "[endif]" は認識されないため、" <!--[if gt IE 8]><!-->" と " <!--<![endif]-->" は標準の HTML コメントです。したがって、出力します<html class="no-js">

私を混乱させるのはIE9の場合です。IE9の場合、条件「if gt IE 8」がTRUEなので、IE条件の本体を出力します。

<!--> <html class="no-js"> <!--
  1. <!-->空のコメントです。
  2. <html class="no-js">通常の HTML 出力です。

しかし、末尾の「<!--」はどうでしょうか。それはどのように扱われますか?私の意見では、この最初のコメント タグは、終了タグ " " に遭遇するまで、その後に続くすべてのものをコメントに変えます-->。これは大きな問題ではありませんか?

しかし、私はこれについて疑問を呈する人を見たことがありません。それで、私は何かを逃していますか?誰かが私にこれを説明できますか?どんな助けでも大歓迎です。

4

2 に答える 2

2

IE9の場合、条件「if 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+ かインターネット エクスプローラーではないか) には次の情報のみが表示されます。

<html class="no-js">
于 2013-10-08T10:06:05.123 に答える