[56] DOCTYPEスイッチは、 DOCTYPE の記述によって文書の
compatMode
を変更するものです。90年代末から00年代初頭の
Webブラウザーの実装と標準仕様の規定との乖離を解消することを目的に導入されましたが、
現在では間違いだったと考えられています。
[9] 文書には、無奇癖モード (標準モード)、 限定奇癖モード (ほぼ標準モード)、 奇癖モード (互換モード) が存在します。 DOCTYPEスイッチは、 このいずれかを決定するものです。
[121] 現在 DOCTYPE として正式に認められているのは、
<!DOCTYPE HTML>... だけです。
[122] それ以外にも無奇癖モードとなる DOCTYPE は存在しますが、 限られた状況下でDOCTYPE遺物文字列や廃止認められているDOCTYPE が使える以外は、すべて認められていません。
[123] 限定奇癖モードや奇癖モードとなる DOCTYPE は、すべて認められていません。
[124] DOCTYPEスイッチは過去のHTML文書との互換性のために存在する機能ですから、
新しい文書では <!DOCTYPE HTML>
以外を使ってはいけませんし、その必要もないはずです。
[109] DOCTYPEスイッチに関わる公開識別子とシステム識別子は、次のように分類されます。
[116] この他にDOCTYPE遺物文字列や廃止認められているDOCTYPE の公開識別子やシステム識別子もあります。 (それぞれの項を参照してください。)
[117] 奇癖モード・無奇癖モードの公開識別子・システム識別子と、 DOCTYPE遺物文字列のシステム識別子と、 廃止認められているDOCTYPEの公開識別子・システム識別子の3種類は、 互いに素な集合となっています。
[68] HTML構文解析器においては、 字句化器と "initial" insertion mode によってモードが設定されます。注釈と空白を除く最初の字句によって、 次のように決定されます。
html
以外なら、iframe
srcdoc
文書以外なら、
奇癖モードとします。iframe
srcdoc
文書以外なら、about:legacy-compat
なら、何もしません。iframe
srcdoc
文書以外なら、iframe
srcdoc
文書以外なら、
字句の force-quirks flag が設定されていれば、奇癖モードとします。document.open
[120] 仕様上は document.open
はモードを変更するとはされていませんから、
最初にDOCTYPEスイッチするような字句が現れる前や、
本来無奇癖モードになる DOCTYPE が存在する時に、
document.open
前のモードが引き継がれることとなります。
[58] document.open()
すると、
Firefox 2、WinIE 7、Opera 9.27
では compatMode
が BackCompat
になり、その後は文書型宣言の有無によって CSS1Compat
になるか、そのまま変わりません。Safari 3.1.1
はずっと CSS1Compat
のままで、
文書型宣言によっても変化しません。
2008-05-16 20:30:37 +09:00
版) http://suika.fam.cx/~wakaba/-temp/test/dom/document/compat-mode/[57] >>58 Firefox 3 は (試してないけどたぶん Firefox 2 も)
compatMode
は open
のときにリセットされず、
その後の文書型宣言の有無で値を変えているだけみたいです。
WinIE 7 と Opera 9.61 は open
で BackCompat
に設定しているようです。
document.compatMode
[59] Document
インターフェイスの
compatMode
IDL属性は、
奇癖モードの時 BackCompat
を返し、
それ以外の時 CSS1Compat
を返します >>60。
[65] モードによるスクリプト用 API の挙動やレンダリングの変化に関しては、 奇癖モード、限定奇癖モード、無奇癖モードの項を参照してください。
[87] 適合性検査器は、DOCTYPE字句の名前、公開識別子、システム識別子の値や存在・不存在に基づき検査モードを (例えば HTML4 モードに) 変更しても構いません >>13。
[89] そのような切り替えが認められているのは、適合性検査器だけです。 それ以外の実装は、奇癖モード、限定奇癖モード、無奇癖モードのいずれかの (最新の HTML Standard その他関連仕様の) 規定に従わなければなりません。
[125] HTML Standard により DOCTYPEスイッチの動作が厳密に規定され、 すべての Webブラウザーがそれに従う形で動作が統一されたことで、 今後 DOCTYPEスイッチによるモードの決定方法が変更される (奇癖モードとなる公開識別子が追加されるなどする) 可能性はほとんどありません。
iframe
srcdoc
文書が新設された時に、
iframe
srcdoc
文書は常に無奇癖モードとすることとされました。
このように新しい文脈においてはDOCTYPEスイッチを適用しない例が今後もあるかもしれません。[66] IE は独自に documentMode
という似て異なる動作モードを
(DOCTYPEスイッチに加えて) 実装しています。
[90] 、 Gecko にモードを実装することが提案されました >>86。
[43] Gecko にモードが実装されたのが1999年 (リリース版としては Mozilla 0.6、 Netscape 6)。
[44] MacIE に実装されたのは 5.0 (2000年3月) から。
[45] >>44 3月は正式版で、β版で実装されていたかは不明。
[46] WinIE に実装されたのは 6.0 から。 Public Preview は2001年3月、正式版は9月。いつから実装されていたのかは不明。
[1] The Opera 7 and 8 DOCTYPE Switches http://www.opera.com/docs/specs/doctype/
[2] Welcome to the MSDN Library http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnie60/html/cssenhancements.asp
[3] Mozilla's DOCTYPE sniffing http://www.mozilla.org/docs/web-developer/quirks/doctypes.html
[7] Mozilla's DOCTYPE sniffing - MDC http://developer.mozilla.org/en/docs/Mozilla%27s_DOCTYPE_sniffing
[12] Mozilla's Quirks Mode - MDC http://developer.mozilla.org/en/docs/Mozilla%27s_Quirks_Mode
[14] Mozilla Quirks Mode Behavior - MDC http://developer.mozilla.org/en/docs/Mozilla_Quirks_Mode_Behavior (名無しさん)
[15] Mozilla's DOCTYPE sniffing - MDC http://developer.mozilla.org/en/docs/Mozilla%27s_DOCTYPE_sniffing (名無しさん)
[16] mozilla/parser/htmlparser/src/nsParser.cpp http://lxr.mozilla.org/mozilla/source/parser/htmlparser/src/nsParser.cpp#833 (名無しさん)
[25] IEBlog : The <?xml> prolog, strict mode, and XHTML in IE http://blogs.msdn.com/ie/archive/2005/09/15/467901.aspx (名無しさん)
[28] /trunk/WebCore/css/quirks.css - WebKit - Trac http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/css/quirks.css (名無しさん)
[29] /trunk/WebCore/html/HTMLDocument.cpp - WebKit - Trac http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/html/HTMLDocument.cpp#L240 (名無しさん)
[30] /trunk/WebCore/html/DocTypeStrings.gperf - WebKit - Trac http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/html/DocTypeStrings.gperf (名無しさん)
[31]
!DOCTYPE (2007-02-18 01:19:07 +09:00
版) http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/doctype.asp
(名無しさん)
[32]
!DOCTYPE (2007-02-18 01:19:07 +09:00
版) http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/doctype.asp
(名無しさん)
[35]
Bug 1312 – "Standard" compatibility mode needs to be hooked to DOCTYPE (2007-04-21 18:33:57 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=1312
(名無しさん)
[38]
Bug 31933 – NavQuirks mode triggered for Transitional documents when not desired (2007-04-21 18:51:15 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=31933
(名無しさん)
[42]
Bug 153032 – Implement almost-standards rendering mode (2007-04-21 19:29:50 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=153032
[5] 文書型宣言中の空白は無視されているらしい。 http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/4961 (名無しさん 2005-11-12 13:38:17 +00:00)
[8] Activating the Right Layout Mode Using the Doctype Declaration http://hsivonen.iki.fi/doctype/
[11] hxxk.jp - DOCTYPE スイッチについての検証とまとめと一覧表 http://hxxk.jp/2006/12/19/2100 (名無しさん 2006-12-19 23:21:07 +00:00)
[10] crisp’s blog » Blog Archive » Having fun with IE - part 3: doctype switching http://therealcrisp.xs4all.nl/blog/2006/12/01/having-fun-with-ie-part-3/ (名無しさん 2006-12-18 11:53:30 +00:00)
[17] mozilla dtd test http://www.ash.ne.jp/~mal/mozilla/mozdtd/ (名無しさん)
[18] DOCTYPE 宣言による「解釈モード」の切り替え http://www.remus.dti.ne.jp/~a-satomi/bunsyorou/Doctype-Switch_situation.html (名無しさん)
[20] !DOCTYPE スイッチ http://www.seo-equation.com/www/cat25/doctype_switching (名無しさん)
[23] M$IE6の文書型宣言判別 (dinosaur's square) http://www.geocities.co.jp/Technopolis-Mars/2989/misc/ie-doctype.html (名無しさん)
[24] DOCTYPEによる判別 http://www.noelnet.org/noel/tech/doctype/ (名無しさん)
[26] DOCTYPEs and their Respective Layout Modes - The Web Standards Project http://www.webstandards.org/learn/reference/charts/doctype-switch/ (名無しさん)
[27] IE7 (beta 2) Doctype Testing - AlastairC.ac http://alastairc.ac/testing/IE7_Doctypes/ (名無しさん)
[41]
Bug 55264 – [DOCTYPE] Documents with unknown DOCTYPE should be displayed in strict mode (2007-04-21 19:28:57 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=55264
(名無しさん)
[50] Approximate IE6 quirks detection logic ( 版) http://philip.html5.org/docs/quirks.txt
[19] 「DOCTYPE スイッチ」 CSS 解釈実例編 http://www.remus.dti.ne.jp/~a-satomi/bunsyorou/Doctype-Switch_example.html (名無しさん)
[22] 各UAのDOCTYPEスイッチについて - CSS Dencitie http://www6.plala.or.jp/go_west/nextcss/tip/doctype.htm (名無しさん)
[39]
Bug 1044 – inheritance problems in tables (2007-04-21 19:00:44 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=1044
(名無しさん)
[40]
Bug 5821 – {compat} Nav4 vs CSS2 line box model (2007-04-21 19:03:04 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=5821
[4] Doctype switching for SGML comments http://www.howtocreate.co.uk/sgml/doctypeSGML.html (名無しさん 2005-11-07 00:28:23 +00:00)
[36]
Bug 2749 – Comments are incorrectly parsed: <!-- -- --> inside comment! <!-- -- --> (2007-04-21 18:36:58 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=2749
(名無しさん)
[37]
Bug 31933 – NavQuirks mode triggered for Transitional documents when not desired (2007-04-21 18:46:36 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=31933
[6] DOCTYPE Switch - uncolored dinosaurs http://foobar.parfe.jp/apteryx.cgi?p=DOCTYPE_Switch (名無しさん 2005-12-07 11:38:55 +00:00)
[21] Mozillaには複数のレンダリングモードがあります - Web標準普及プロジェクト http://www.mozilla.gr.jp/standards/webtips0014.html (名無しさん)
Note In standards-compliant mode, compatibility with other versions of Internet Explorer is not guaranteed. When standards-compliant mode is switched on, the rendering behavior of documents may be different in later versions of Internet Explorer. You should not use this mode for content that is fixed in nature, such as content that is burned on a CD.
(名無しさん 2007-02-17 16:23:24 +00:00)
[34]
scroll="no"をCSSで (2006-12-17 15:08:56 +09:00
版) http://chaichan.web.infoseek.co.jp/qa1000/qa1375.htm
あいこ [WriteDate : Thu Jun 14 05:36:59 2001]
やっぱりネスケ6のテーブルバグは DOCTYPE宣言の後半の "http://www.w3.org/〜〜〜〜 を入れていたのが原因だったみたいです。 なんか格好良かったのでついつい入れてしまったのが災いしたようです(汗) あまり分からない事するものじゃないですね!
[47]
各表示モードによる CSS 解釈の違いをまとめたドキュメントを共有 - 2xup.org (Taichi Kaminogoya 著, 2007-07-27 21:41:05 +09:00
版) http://2xup.org/log/2007/07/27-2111
(名無しさん 2007-07-27 14:02:57 +00:00)
[48]
文書型宣言(DOCTYPE)により、ブラウザのレンダリングが変わってしまう (2007-08-11 00:43:12 +09:00
版) http://dev.xperl.jp/Okulab/archives/3
(名無しさん 2007-08-10 15:45:07 +00:00)
[49]
M$IE6の文書型宣言判別 (dinosaur's square) (MOCHIZUKI Sunao 著, 2007-10-16 16:18:04 +09:00
版) http://www.geocities.co.jp/Technopolis-Mars/2989/misc/ie-doctype.html
[51] hxxk.jp - DOCTYPE スイッチについてのまとめと一覧表 (HTML 5 や IE 8 Beta 2 のモードスイッチなどの情報も含んだ 2008 年版 ) (真琴 著, 版) http://hxxk.jp/2008/09/29/0118
[52] gsnedders / The Need For A Switch in IE8 ( 版) http://gsnedders.com/the-need-for-a-switch-in-ie8
[53] IRC logs: freenode / #whatwg / 20110624 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110624#l-77
[54] Web Applications 1.0 r8642 Reorder the list of DOCTYPEs to have the exact comparisons before the prefix comparisons, and remove commented-out values since there's very little chance of us having to change this again now that we have multiple deployed implementations. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=8641&to=8642
[91] Document open steps and quirks mode · Issue #3831 · whatwg/html () https://github.com/whatwg/html/issues/3831
[92] Make document.open() set the document to no-quirks by TimothyGu · Pull Request #3966 · whatwg/html () https://github.com/whatwg/html/pull/3966