コメントしたい(<!-- this -->
style)HTMLコードの最上部、DOCTYPE宣言の前。これは規格に準拠していますか?主要なブラウザでサポートされていますか?これを行う際に落とし穴はありますか?
<!DOCTYPE>
最初が確かにベストプラクティスです。
一部のブラウザー(おそらくIE6)が<!DOCTYPE>
その前に一見無害なものがあったため-空白文字だけだと思いますが、コメントだったのかもしれません。いずれにしても、追跡する必要があるのは恐ろしい、恐ろしいバグであり、コメントや空白を<!DOCTYPE>
。
<!DOCTYPE>
最初は、恐ろしい、とらえどころのないバグを回避するために、経験豊富なWeb開発者が行うことです。
完全に有効を実行する
<!-- this, -->
<!DOCTYPE html>
ただし、これはallバージョンIEをquirks-modeに変換します(ただし、forcedを非互換モードにします—下のGotchasセクションを参照してください)最も簡単なのは、コメントをDOCTYPEの下に移動することです。
<!DOCTYPE html>
<!-- this, -->
しかし、別の方法は、コメントを「アップグレード」して、次のような適切なconditionalコメントにすることです。 :
<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>
説明: a条件付きコメントはcount IEの世界ではコメントとして機能しません。
代替構文:条件付きコメントがMicrosoftのHTML標準への侵入であることを忘れたり、思い出したりするには、たとえば
<!--[if anybrowser]> this <![endif]-->
<!DOCTYPE html>
同様に、IEをターゲットにするには、特に、
<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>
Gotchas
コメント内条件付きコメントはIEをquirks-modeに入れますif IE sees it(つまり:if 1つは[if IE]条件を使用するか、または[if !anybrowser]上で述べた条件です。たとえば、これはIE quirks-mode:
<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>
のように
<!--[if IE]><!--><!-- this <![endif]-->
<!DOCTYPE html>
および他の多くの亜種。たとえば
<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]-->
<!DOCTYPE html>
しないquirks-modeを引き起こします、なぜならhere条件付きコメントがDOCTYPEの前にあるからですその他コンテンツ、つまりIEは、ページの最初のコンテンツがDOCTYPEであると見なします。
最後に、最新のIEバージョン、IE8およびIE9は、標準にforcedできます-別のMicrosoftの発明を使用したモード(および奇妙なモードも同様)—x-ua-compatibleディレクティブ http://msdn.Microsoft .com/en-us/library/cc288325(v = vs.85).aspx その場合、
<!-- this -->
<!DOCTYPE html>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
force IE8およびIE9はno-quirksモードになり、IE6およびIE7はquirksのままになりますモード。それに対して、対照的にthis
<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>
force IE8およびIE9を標準モードにしますdespite条件付きコメントの内容はDOCTYPEで始まりませんではありません。また、IE6とIE7も、条件付きコメントがそれらを対象としていないため、非互換モードのままになります。
それは私が信じている標準に従って許容可能ですが、それはIEを癖モードに投げるので、絶対に避けたいです。
( 異なるレンダリングモードのトリガー を参照)
this page によると、IE7はdoctypeがまったく存在しないかのように互換モードでレンダリングする可能性があります。
Doctypeの前のコメントは許可されますが、all IEバージョンが互換モードに戻ります。実際には、その目的で使用されることがあります。XML宣言(<?xml version ...?>
)は同じ効果があります。IE6以下では。