1

私のページでは、doctypeは次のように宣言されています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

DTDは明示的に指定されていません。IEではどのDTDがデフォルトになるのだろうか?

と同じように動作しないようです

"http://www.w3.org/TR/html4/loose.dtd"

ルーズ.dtdを追加した後、ページのテーブルが壊れたためです。誰かがこれを説明するのを手伝ってもらえますか?ありがとう!

4

2 に答える 2

5

走行距離はブラウザとバージョンによって異なりますが、その概要は次のとおりです。

私の知る限り、ブラウザは実際には、URL 内の dtd を取得して利用したり、コードを検証したりすることはありません。その結果、Web ページは、doctype 宣言がなくても、doctype 宣言が壊れていても、その他の多くの壊れた形式でも「問題なく」動作します。

バリデータを介してコードを実行しない場合、コードの先頭に doctype 定義を提供する主な理由は、ブラウザーを quirks モードから標準準拠モードに移行することです。IE < 7 での歴史的な災害...

ここで癖と標準モードについて説明するのは少し範囲外なので、興味のある方はウィキペディアにアクセスしてください: http://en.wikipedia.org/wiki/Quirks_mode

Web ブラウザーは、独自の比較的恣意的な標準を使用して、doctype に基づいてモードを切り替えます。あなたが遭遇する可能性が高いのは、DTD に URL がない場合の互換モードの IE と、URL を追加する場合の標準モードです。

おそらく、URL を含む完全な宣言を含めることを目指し、W3C バリデーター [1] でコードを実行して適切な測定を行う必要があります。

有効なコードと完全な doctype [2] を使用してレンダリングの問題を修正します。Quirks モードは下位互換性のみを目的としており、メンテナンスされていない Web サイトが可能な限り長く期待どおりにレンダリングし続けるようにします。
Web ページが Quirks モードでのみ期待どおりにレンダリングされる場合、Web ページは壊れています。

補足: 2013 年に 4.01 トランジショナルを使用している理由を真剣に検討する必要があります。

[1] http://validator.w3.org/
[2] http://www.w3.org/QA/2002/04/valid-dtd-list.html

于 2013-02-19T04:20:09.213 に答える
5

SGML 標準では、文書型宣言は、W3C によって登録されているように、名前を付けて文書型定義を指定します。ただし、HTML 4.01 仕様では、ドキュメントには 3 つの代替ドキュメント タイプ宣言のいずれかが必要であり、それらすべてに URL も含まれています。

ブラウザーは実際には DTD を読み取らないため、これは理論にすぎません。doctype sniffingでは、ドキュメント タイプ宣言をマジック ストリングとして扱います。ただし、ほとんどのブラウザーでは、ブラウザーのモードの選択は、HTML 4.01 Transitional のマジック ストリング内の URL の有無によって影響を受けます。存在しない場合、 Quirks Modeで動作します。存在する場合、ほとんどのブラウザーは「標準モード」または「ほぼ標準モード」で動作します。

Quirks Mode は多数の異なる Quirks を意味するため、それから「標準モード」に切り替えた効果は、ほとんど何でも意味する可能性があります (効果なしから完全な災害までさまざま)。このような切り替えには、通常、文書全体の書き直しではないにしても、注意深いチェックが必要です。

于 2013-02-19T06:11:03.033 に答える