HTMLドキュメントに2つのDoctypeがある場合、Doctypeはページのレンダリングにどのように影響し、ブラウザはどのDoctypeを選択しますか?1つのドキュメントに2つ(またはそれ以上)のDoctypeが含まれていることは有効ですか、それとも混乱を招きますか?
例:
<!DOCTYPE html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
</html>
単一のDoctype宣言のみが許可されます。これは、HTML仕様とHTML5ドラフトに直接準拠しており、バリデーターを使用して確認することもできます。
したがって、何が起こるべきかについての仕様はありません。当然のことながら、ブラウザはブラウザモード(Quirksモードと標準モード)を決定するときに「doctypeスニッフィング」でのみDoctype宣言を処理するため、最初のDoctype宣言のみが有効になり、他の宣言は無視されます。
これは、たとえば次のようにテストできます(HTML 3.2 doctypeを使用して、すべてのdoctype-snifferブラウザーでQuirksモードをトリガーします)。
<!DOCTYPE HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<title>Testing duplicate doctype effect</title>
<script>
document.write(document.compatMode);
</script>
</html>
これにより、「CSS1Compat」(=標準モード)が表示されますが、Doctype宣言を交換すると、「BackCompat」(=クァークズモード)が発生します。
私は、最初DOCTYPE
のものがブラウザによって使用されていると信じており、ドキュメントに複数を含めることは仕様に反しています。
DOCTYPE
複数の-sが有効である可能性がある唯一の状況は、IE条件付きコメントを使用する場合であると(わかりませんが)思います。もちろん、IE以外のブラウザはそれらを認識しません。
ブログエントリを読んだことを覚えていますが(今は見つからないので、これは間違っているかもしれません)、一部の(ほとんどの?)ブラウザは、最初に遭遇したものでなければDOCTYPEを無視します。(これは、それ以降に修正されたバグである可能性があります。)
W3Schoolのリファレンスページは次のDOCTYPE
とおりです。
HTMLページに複数のDOCTYPEが含まれている場合、ブラウザは最初のDOCTYPEを考慮し、ブラウザはDOMを1行ずつ解析します。ブラウザがDOCTYPEを取得すると、他のDoctypeの検索を停止し、HTMLタグの検索にジャンプします。
上記の質問では、最初にHTML-5 DOCTYPEが言及され、次にHTML-4が言及されています。このブラウザによると、HTML-5DOCTYPEとしてレンダリングされます。
http://www.w3schools.com/で一度試してみることをお勧めします...両方のDoctypeに優先順位を付けて、「code」または「kbd」または「dfn」または「samp」または「strong」タグを使用してみてください。