การสลับโหมดที่รวมอยู่ในบทความนี้เหมาะสำหรับ Firefox และเบราว์เซอร์ที่ใช้ตุ๊กแกอื่น ๆ , Safari, Chrome และเบราว์เซอร์ที่ใช้ Webkit, Opera, Konqueror, Internet Explorer สำหรับ Mac, Internet Explorer สำหรับ Windows และเบราว์เซอร์ที่มี IE ในตัว หลีกเลี่ยงการพูดถึงชื่อของเครื่องยนต์เบราว์เซอร์และใช้ชื่อเบราว์เซอร์ที่รู้จักกันดีที่สุดของเครื่องยนต์แทน
บทความนี้มุ่งเน้นไปที่กลไกการเลือกของรูปแบบแทนที่จะบันทึกพฤติกรรมที่แน่นอนของแต่ละรูปแบบ
นี่คือโหมดที่แตกต่างหลากหลาย:
การเลือกรูปแบบของเนื้อหาข้อความ/html ขึ้นอยู่กับการดมกลิ่น doctype (การดมกลิ่น doctype ที่กล่าวถึงในภายหลังในบทความนี้) ใน IE8 รูปแบบยังขึ้นอยู่กับปัจจัยอื่น ๆ อย่างไรก็ตามโดยค่าเริ่มต้นใน IE8 รูปแบบของไซต์ที่ไม่ใช่ intranet ที่ไม่ได้ให้ไว้ในบัญชีดำของ Microsoft ขึ้นอยู่กับประเภทเอกสาร
มันไม่ได้เป็นการพูดเกินจริงที่จะเน้นความแตกต่างในพฤติกรรมที่แม่นยำของรูปแบบในแต่ละเบราว์เซอร์แม้ว่าจะมีการอภิปรายแบบครบวงจรในบทความนี้
ใน Firefox, Safari, Chrome และ Opera, Application/XHTML+XML HTTP ประเภทประเภท (ไม่ใช่องค์ประกอบเมตาหรือ Doctype!) จะกระตุ้นรูปแบบ XML ในรูปแบบ XML เบราว์เซอร์พยายามที่จะให้ข้อมูลข้อกำหนดที่ถูกต้องของ XML เอกสารที่ถูกต้องตามขอบเขตที่อยู่ในเบราว์เซอร์
IE6, 7 และ 8 ไม่สนับสนุนแอปพลิเคชัน/XHTML+XML และ Mac IE5 ก็เช่นกัน
ในเบราว์เซอร์ Nokia S60 ที่ใช้ WebKit แอปพลิเคชัน/XHTML+XML HTTP ประเภทเนื้อหาไม่สามารถกระตุ้น Schema XML ได้เนื่องจากการโฟกัสในสวนที่มีกำแพงล้อมรอบนั้นเข้ากันได้กับเนื้อหาที่ผิดปกติ (เบราว์เซอร์มือถือแบบเก่าไม่สามารถใช้ตัวแยกวิเคราะห์ XML จริงได้เนื่องจากเนื้อหาที่ไม่ได้มาตรฐานได้รับการทำเครื่องหมาย XML)
เนื่องจาก Konqueror ยังไม่ได้รับการทดสอบอย่างเต็มที่ฉันจึงไม่สามารถพูดได้อย่างแน่นอนว่าจะเกิดอะไรขึ้นในเบราว์เซอร์นี้
รูปแบบที่เครื่องยนต์บางตัวไม่มีส่วนเกี่ยวข้องกับเนื้อหาเว็บ เพื่อความสมบูรณ์พวกเขาจะถูกกล่าวถึงที่นี่เท่านั้น Opera มีโหมด WML2.0 WebKit on Leopard มีโหมดเฉพาะสำหรับวิดเจ็ตแดชบอร์ดดั้งเดิม
นี่คือผลกระทบหลักของรูปแบบเหล่านี้:
รูปแบบข้อความ/HTML ส่วนใหญ่มีผลต่อเค้าโครง CSS ตัวอย่างเช่นมันเป็นเกมที่เล่นโวหารสำหรับตารางที่จะไม่สืบทอดสไตล์ ในโหมดการเล่นโวหารของเบราว์เซอร์บางรุ่นกล่องจะกลายเป็นโมเดลกล่องของ IE5.5 เอกสารนี้ไม่ได้แสดงรายการเค้าโครงทั้งหมด
โหมดกึ่งมาตรฐาน (ในเบราว์เซอร์ที่มีโหมดนี้) เฉพาะเซลล์ตารางที่มีรูปภาพแตกต่างกันในโหมดสูงและมาตรฐาน
ใน Schema XML ตัวเลือกมีพฤติกรรมที่ไวต่อกรณีแตกต่างกัน นอกจากนี้กฎที่ไม่ซ้ำกันสำหรับองค์ประกอบร่างกาย HTML ไม่สามารถนำไปใช้กับเบราว์เซอร์รุ่นเก่าที่ไม่ได้ใช้การเปลี่ยนแปลง CSS2.1 ล่าสุด
นอกจากนี้ยังมีนิสัยใจคอบางอย่างที่ส่งผลกระทบต่อการแยกวิเคราะห์ HTML และ CSS และจะทำให้หน้าเว็บที่ตรงตามมาตรฐานที่จะแยกวิเคราะห์ไม่ถูกต้อง เค้าโครงของนิสัยใจคอจะกำหนดว่าจะเปิดนิสัยใจคอเหล่านี้หรือไม่ ไม่ว่าในกรณีใดมันเป็นสิ่งสำคัญมากที่จะเข้าใจความคล้ายคลึงกันหลักและความแตกต่างของรูปแบบการเล่นโวหารและรูปแบบมาตรฐานในเค้าโครง CSS และการแยกวิเคราะห์ (ไม่ใช่การแยกวิเคราะห์ HTML)
บางคนเรียกว่าโหมดการแยกวิเคราะห์อย่างเข้มงวดโหมดมาตรฐานซึ่งทำให้ผู้คนเข้าใจผิดกฎไวยากรณ์ HTML ของเบราว์เซอร์และการประเมินความถูกต้องของแท็กของเบราว์เซอร์และการประเมินความถูกต้องของแท็ก นี่ไม่ใช่กรณี แม้ว่าเค้าโครงโหมดมาตรฐานจะมีผล แต่เบราว์เซอร์จะยังคงทำซุปแท็ก (ซุปแท็ก, http://en.wikipedia.org/wiki/tag_soup) งานแก้ไข (ก่อนที่ NetScape6 จะได้รับการปล่อยตัวในปี 2000 Mozilla มีรูปแบบการแยกวิเคราะห์สำหรับการบังคับใช้กฎไวยากรณ์ HTML รูปแบบเหล่านี้ถูกทิ้งร้างไม่เข้ากับเนื้อหาเว็บที่มีอยู่)
ความเข้าใจผิดทั่วไปอีกประการหนึ่งเกี่ยวกับการแยกวิเคราะห์ XHTML โดยปกติแล้วจะเชื่อว่าการพาร์ทที่แตกต่างกันนั้นได้มาจาก XHTML Doctype ในความเป็นจริงนี่ไม่ใช่กรณี ประเภทเนื้อหาเหมือนกับเอกสาร Parser และ HTML ที่ใช้ในเอกสาร XHTML ของข้อความ/HTML สิ่งที่เบราว์เซอร์ใส่ใจในตอนนี้คือ XHTML ที่มีประเภทเอกสารข้อความ/HTML เป็นเพียงซุปแท็กที่มี crouts (slashes พิเศษทุกที่)
เฉพาะเมื่อมีการใช้เอกสารประเภทเอกสาร XML (ตัวอย่างเช่น: แอปพลิเคชัน/XHTML+XML หรือ XMAPPLICATION/) จะใช้ตัวแยกวิเคราะห์จะทริกเกอร์ Schema XML สำหรับการแยกวิเคราะห์ ตัวแยกวิเคราะห์ในเวลานี้แตกต่างอย่างสิ้นเชิงจากตัวแยกวิเคราะห์ HTML
ในขณะที่รูปแบบการเล่นโวหารส่วนใหญ่เกี่ยวกับ CSS บางส่วนเกี่ยวกับการเขียนสคริปต์ ตัวอย่างเช่นในรูปแบบการเล่นโวหารของ Firefox แอตทริบิวต์ HTML ID จะสร้างการอ้างอิงวัตถุไปยังขอบเขตสคริปต์ทั่วโลกเช่นเดียวกับใน IE ผลกระทบของสคริปต์ใน IE8 นั้นมีค่ามากกว่าความสนใจมากกว่าเบราว์เซอร์อื่น ๆ
ใน Schema XML, DOM API บางตัวทำงานแตกต่างกันอย่างสิ้นเชิงเนื่องจากพฤติกรรม DOM API ของ XML ไม่สามารถใช้งานได้กับพฤติกรรม HTML เมื่อกำหนด
เบราว์เซอร์ที่ทันสมัยใช้การดมกลิ่น Doctype เพื่อกำหนดโหมดเครื่องยนต์ของเอกสารข้อความ/HTML ซึ่งหมายความว่าตัวเลือกของสคีมานั้นขึ้นอยู่กับการประกาศประเภทเอกสาร (หรือขาดหายไป) เริ่มต้นด้วยเอกสาร HTML (ไม่เหมาะสำหรับเอกสารที่ใช้ประเภทเอกสาร XML)
การประกาศประเภทเอกสาร (DOCTYPE) เป็นการปลอมแปลงไวยากรณ์ของ SGML SGML เป็นกรอบมาร์กอัปแบบเก่า HTML ก่อนที่ HTML5 จะถูกกำหนดตาม ในข้อกำหนด HTML4.01 การประกาศประเภทเอกสารอธิบายข้อมูลเวอร์ชันของ HTML แม้ว่าชื่อคือการประกาศประเภทเอกสารและข้อกำหนด HTML 4.01 อธิบายข้อมูลเวอร์ชันการประกาศประเภทเอกสารไม่ได้ใช้กับการจำแนกเอกสาร SGML หรือ XML เป็นเอกสารประเภทเฉพาะแม้ว่าจะดูเหมือน (เพราะชื่อ) (เนื้อหาเพิ่มเติมอยู่ในภาคผนวก)
ทั้งข้อกำหนด HTML4.01 และ ISO 8879 (SGML) ไม่ได้พูดอะไรเกี่ยวกับการใช้การประกาศประเภทเอกสารเป็นการแปลงโหมดเครื่องยนต์ Doctype Sniffing ขึ้นอยู่กับการสังเกต เมื่อ Doctype sniffing ได้รับการออกแบบ quirks ส่วนใหญ่ไม่มีการประกาศประเภทเอกสารหรือการอ้างอิงถึง DTD เก่า HTML5 ยอมรับข้อเท็จจริงนี้และกำหนด doctype เป็นการแปลงโหมดเดียวในข้อความ/html
การประกาศประเภทเอกสาร pre-HTML5 (pre-HTML5) ทั่วไปประกอบด้วย (คั่นด้วยช่องว่าง) <! สตริง doctype, ตัวระบุทั่วไปสำหรับองค์ประกอบรูท (HTML), สตริงสาธารณะ, ตัวระบุทั่วไป DTD ในคำพูด, ตัวระบุระบบที่เป็นไปได้ (URL) การประกาศประเภทเอกสารคือก่อนที่องค์ประกอบรูทของเอกสารจะเริ่มฉลาก
นี่คือคำแนะนำง่ายๆเกี่ยวกับวิธีการเลือก Doctype เมื่อสร้างเอกสารข้อความ/HTML ใหม่:
ฉันไม่แนะนำ XHTML Doctype ใด ๆ เนื่องจาก XHTML ถือว่าเป็นอันตรายต่อการใช้เป็นข้อความ/HTML อย่างไรก็ตามหากคุณเลือกที่จะใช้ XHTML Doctype โปรดทราบว่าการประกาศ XML ทำให้เกิด IE6 (แต่ไม่ใช่ IE7!) เพื่อเรียกรูปแบบการเล่นโวหาร
คู่มือง่าย ๆ สำหรับแอปพลิเคชัน/XHTML+XML ไม่เคยใช้ doctype หน้าเว็บภายใต้วิธีนี้ไม่สอดคล้องกับ XHMTL1.0 อย่างเคร่งครัด แต่สิ่งนี้ไม่สำคัญ (โปรดดูภาคผนวกด้านล่าง)
รายการแยกออกจากกันเมื่อแนะนำว่า IE8 จะใช้การแปลงรูปแบบเมตา-องค์ประกอบเป็นหนึ่งในปัจจัยสำหรับการเลือกรูปแบบนอกเหนือจาก doctype (ดูบทวิจารณ์โดย Ian Hickson, David Baron, David Baron อีกครั้ง Robert O'Callahan และ Maciej Stachowiak)
มี 4 โหมดสำหรับ IE8: IE5.5 โหมด Quirk, โหมดมาตรฐาน IE7, โหมดมาตรฐาน IE8 และโหมดมาตรฐาน IE8 การเลือกโหมดขึ้นอยู่กับข้อมูลจากหลาย ๆ ด้าน: Doctype, องค์ประกอบเมตา, ส่วนหัว HTTP, ข้อมูลดาวน์โหลดปกติจาก Microsoft, โดเมน LAN, การตั้งค่าที่ทำโดยผู้ใช้การตั้งค่าที่ทำโดยผู้ดูแลระบบ LAN (สำหรับแอปพลิเคชันอื่น ๆ ที่ฝังอยู่ในเครื่องยนต์รูปแบบยังขึ้นอยู่กับแอปพลิเคชันที่ฝังอยู่)
โชคดีที่ IE8 มักจะใช้การดมกลิ่น Doctype เหมือนเบราว์เซอร์อื่น ๆ หากมีสิ่งต่อไปนี้เกิดขึ้น:
ยกเว้นสองกรณีเกี่ยวกับ X-UA ที่เข้ากันได้ IE8 ทำการดมกลิ่น Doctype เหมือน IE7 IE7 Emulation (IE7 Emulation) เรียกว่ามุมมองที่เข้ากันได้
ในกรณีของ X-UA ที่เข้ากันได้ IE8 ทำงานแตกต่างจากเบราว์เซอร์อื่น ๆ อย่างสิ้นเชิง ฉันต้องการดูภาคผนวกหรือผังงานในรูปแบบ PDF และ PNG ในหน้านี้
น่าเสียดายที่ไม่มีส่วนหัว HTTP หรือ Meta Tag สำหรับ X-UA ที่เข้ากันได้กับ X-UA และถึงแม้จะมี doctype ที่เหมาะสม IE8 ช่วยให้ผู้ใช้สามารถลดหน้าเว็บจากโหมดมาตรฐานของ IE8 ได้โดยไม่ได้ตั้งใจซึ่งเป็นโหมดมาตรฐาน IE7 แบบจำลอง ผู้ดูแลระบบ LAN สามารถทำเช่นเดียวกันได้ Microsoft ยังสามารถขึ้นบัญชีดำชื่อโดเมนทั้งหมดที่คุณใช้
ในการจัดการกับเอฟเฟกต์เหล่านี้ Doctype ไม่เพียงพอคุณต้องใช้ส่วนหัว HTTP ที่เข้ากันได้กับ X-UA และ Meta Tag
คู่มือง่าย ๆ ต่อไปนี้สำหรับเอกสารข้อความ/HTML ใหม่ที่มีโหมดมาตรฐานทริกเกอร์ Doctype หรือโหมดมาตรฐานกึ่งมาตรฐานในเบราว์เซอร์อื่น ๆ สำหรับวิธีการเลือกส่วนหัว HTTP ที่เข้ากันได้กับ X-UA หรือ Meta Tag:
โปรดอย่านำการดมกลิ่น Doctype มาที่ XML
การดมกลิ่น Doctype คือการแก้ปัญหาของซุปซุปที่ติดฉลากโดยใช้วิธีการเหมือนซุปซุป Doctype Sniffing เป็นวิธีการเบื้องต้นที่ออกแบบมาหลังจากการเปิดตัวข้อกำหนด HTML4 และ CSS2 ซึ่งแยกเอกสารที่ล้าสมัยจากเอกสารเพื่อให้ตรงกับพฤติกรรมที่ผู้เขียนคาดหวัง
บางครั้งก็แนะนำให้ใช้การดมกลิ่น Doctype บน XML เพื่อกำหนดเวลาการประมวลผลที่แตกต่างกันระบุคำศัพท์ที่ใช้หรือเพื่อเปิดใช้งานคุณสมบัติ นี่เป็นความคิดที่ไม่ดี การกำหนดเวลาและการจดจำคำศัพท์ควรอยู่บนพื้นฐานของเนมสเปซในขณะที่การเปิดใช้งานคุณสมบัติควรขึ้นอยู่กับคำแนะนำการประมวลผลหรือองค์ประกอบที่ชัดเจน
แนวคิดทั้งหมดของความเป็นรูปแบบที่ดีคือการแนะนำการแยกวิเคราะห์ DTD ที่อนุญาตให้ XML และส่งเสริมเอกสารปลอดเอกสาร ในกรณีที่เป็นทางการเอกสาร XML สองฉบับมีรูปแบบที่เป็นที่ยอมรับเดียวกันและแอปพลิเคชันจะประมวลผลต่างกัน (และไม่ใช่เพราะไม่มีทางเลือกที่จะจัดการเอนทิตีภายนอก) แอปพลิเคชันอาจถูกทำลาย ในทางปฏิบัติหากเอกสาร XML สองฉบับทำให้เนื้อหาเดียวกัน (ชื่อ qnames ละเว้น) ไปยังตัวประมวลผลเนื้อหา SAX2 และแอปพลิเคชันจะประมวลผลเอกสารที่แตกต่างกันแอปพลิเคชันอาจถูกทำลาย เมื่อพิจารณาว่าในฐานะผู้เขียนเว็บเป็นไปไม่ได้ที่จะเชื่อว่าทุกคนจะแยกวิเคราะห์หน้าของพวกเขาโดยใช้ XMLProcessors ที่จัดการกับเอนทิตีเพิ่มเติม (แม้ว่าเบราว์เซอร์บางตัวดูเหมือนจะทำเช่นนั้นในขณะที่พวกเขาแมปตัวระบุสาธารณะบางอย่างกับ DTD ที่กำหนดเอนทิตี้ (คุณยังคงใช้คุณสมบัติการแทนที่ DTD ของตัวตรวจสอบ W3C เพื่อตรวจสอบ DTD แม้ว่าตัวตรวจสอบ W3C จะบอกว่าผลลัพธ์นั้นเป็นเพียงชั่วคราวหรือดีกว่าคุณสามารถใช้การตรวจสอบ NG ที่ผ่อนคลาย
นอกจากนี้เมื่อข้อกำหนดระดับต่ำกำหนดสองสิ่งที่เท่าเทียมกันข้อกำหนดระดับสูงไม่ควรพยายามให้ความหมายที่แตกต่างกัน โปรดพิจารณา <! doctype html สาธารณะ -// w3c // dtd xhtml 1.0 เข้มงวด // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd> หากตัวระบุสาธารณะถูกลบจะมีการระบุ DTD เดียวกันดังนั้น Doctype <! Doctype Html System http://www.w3.org/tr/xhtml1/dtd/xhtml1-stratt.dtd> หมายถึง doctype ก่อนหน้านี้ พวกเขาควรดมกลิ่นแตกต่างกันหรือไม่? มันสามารถเป็นทฤษฎีเพิ่มเติม สมมติว่าคัดลอกไปยังตัวอย่าง dtd เรียกว่า foobar.dtd: <! doctype html system http://example.com/foobar.dtd> จะดมกลิ่นนี้ได้อย่างไร? ควรมีความหมายเหมือนกัน แม้แต่ DTD ทั้งหมดก็สามารถโพสต์ในเอกสารได้
กล่าวอีกนัยหนึ่งถ้ามี #include foo.h คุณไม่ควรผูกเวทมนตร์ดำใด ๆ กับชื่อ foo.h เพราะควรอนุญาตให้คัดลอกเนื้อหาของ foo.h ลงในเอกสารหรือคัดลอก foo.h ลงใน bar.h และเป็นตัวแทน #include bar.h
เหตุผลที่ฉันไม่กังวลเกี่ยวกับ HTML และ SGML ที่สร้างพารามิเตอร์เดียวกันก็คือเว็บเบราว์เซอร์ไม่ได้ใช้ตัวแยกวิเคราะห์ SGML จริงเพื่อแยกวิเคราะห์ HTML ดังนั้นฉันคิดว่ามันไร้ประโยชน์ที่จะปลอมตัวเป็น SGML สำหรับการประมวลผล อย่างไรก็ตามถ้าคุณยังไม่เชื่อโปรดอ่านบทความของ W. Eliot Kimber เกี่ยวกับเรื่องนี้ comp.text.sgml
ในตารางต่อไปนี้รูปแบบการเล่นโวหารรูปแบบมาตรฐานและเกณฑ์เสมือนจะแสดงเป็น Q, S และ A ตามลำดับ เมื่อเบราว์เซอร์มีเพียงสองโหมดโหมดมาตรฐานจะถูกทำเครื่องหมายเป็น S หากความสูงแถวของเซลล์ตารางสอดคล้องกับประสิทธิภาพของโหมดมาตรฐานของ Mozilla และโหมดมาตรฐานจะถูกทำเครื่องหมายว่าเป็นหากความสูงของแถวของเซลล์ตารางสอดคล้องกับประสิทธิภาพของโหมดมาตรฐานของ Mozilla
โปรดทราบว่า XHTML ที่ให้บริการโดยใช้โมเดลเนื้อหา XML นั้นแสดงผลในโหมด XML
วัตถุประสงค์ของตารางนี้ไม่ได้บอกว่า doctypes ทั้งหมดในตารางเป็นตัวเลือกที่สมเหตุสมผลสำหรับการสร้างหน้าใหม่ จุดประสงค์ของตารางนี้คือการแสดงข้อมูลประเภทของคำแนะนำของฉันตาม
สัญลักษณ์ตัวย่อต่อไปนี้ใช้สำหรับชื่อคอลัมน์:
| Doctype | NS6 | Moz เก่า | Moz & Safari & OperA10 & HTML5 | โอเปร่า 9.0 | IE8 & Opera9.5 | IE7 & Opera7.10 | IE6 & opera7.0 | Mac IE5 | Konq3.2 |
|---|---|---|---|---|---|---|---|---|---|
| ไม่มี | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม |
| <! doctype html public -// w3c // dtd html 3.2 final // en> | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม |
| <! doctype html public -// w3c // dtd html 4.0 // en> | S | S | S | S | S | อัน | อัน | อัน | อัน |
| <! doctype html public -// w3c // dtd html 4.01 // en> | S | S | S | S | S | อัน | อัน | ถาม | อัน |
| <! doctype html public -// w3c // dtd html 4.0 // en http://www.w3.org/tr/html4/strict.dtd> | S | S | S | S | S | อัน | อัน | อัน | อัน |
| <! doctype html public -// w3c // dtd html 4.01 // en http://www.w3.org/tr/html4/strict.dtd> | S | S | S | S | S | อัน | อัน | อัน | อัน |
| <! doctype html public -// w3c // dtd html 4.0 transitional // en> | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม |
| <! doctype html public -// w3c // dtd html 4.01 transitional // en> | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม |
| <! doctype html public -// w3c // dtd html 4.01 transitional // en http://www.w3.org/tr/html4/loose.dtd> | S | S | อัน | อัน | อัน | อัน | อัน | อัน | ถาม |
| <! doctype html public -// w3c // dtd html 4.01 transitional // en http://www.w3.org/tr/1999/rec-html401-19991224/loose.dtd> | ถาม | S | อัน | อัน | อัน | อัน | อัน | อัน | ถาม |
| <! doctype html public -// w3c // dtd html 4.0 transitional // en http://www.w3.org/tr/html4/loose.dtd> | ถาม | ถาม | ถาม | ถาม | อัน | อัน | อัน | อัน | ถาม |
| <! doctype html สาธารณะ -// w3c // dtd xhtml 1.1 // en http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd> | S | S | S | S | S | อัน | อัน | อัน | อัน |
| <! doctype html สาธารณะ-// w3c // dtd xhtml พื้นฐาน 1.0 // en http://www.w3.org/tr/xhtml-basic/xhtml-basic10.dtd> | S | S | S | S | S | อัน | อัน | อัน | อัน |
| <! doctype html สาธารณะ -// w3c // dtd xhtml 1.0 เข้มงวด // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd> | S | S | S | S | S | อัน | อัน | อัน | อัน |
| <! doctype html สาธารณะ -// w3c // dtd xhtml 1.0 transitional // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd> | S | S | อัน | อัน | อัน | อัน | อัน | อัน | ถาม |
| <? xml เวอร์ชัน = 1.0 การเข้ารหัส = utf -8?> <! doctype html สาธารณะ -// w3c // dtd xhtml 1.1 // en http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd> | S | S | S | S | S | อัน | ถาม | อัน | ถาม |
| <? XML เวอร์ชัน = 1.0 การเข้ารหัส = UTF-8?> <! doctype html สาธารณะ-// w3c // dtd xhtml basic 1.0 // en http://www.w3.org/tr/xhtml-basic/xhtml-basic10.dtd> | S | S | S | S | S | อัน | ถาม | อัน | ถาม |
| <? xml เวอร์ชัน = 1.0 การเข้ารหัส = utf -8?> <! doctype html public -// w3c // dtd xhtml 1.0 เข้มงวด // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd> | S | S | S | S | S | อัน | ถาม | อัน | ถาม |
| <? xml เวอร์ชัน = 1.0 การเข้ารหัส = utf -8?> <! doctype html public -// w3c // dtd xhtml 1.0 transitional // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd> | S | S | อัน | อัน | อัน | อัน | ถาม | อัน | ถาม |
| <! doctype html สาธารณะ ISO/IEC 15445: 2000 // dtd html // en> | ถาม | S | S | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม |
| <! doctype HTML Public ISO/IEC 15445: 2000 // Markup Hypertext DTD ภาษา // en> | ถาม | S | S | S | S | อัน | อัน | อัน | ถาม |
| <! doctype html สาธารณะ ISO/IEC 15445: 1999 // dtd html // en> | S | S | S | ถาม | ถาม | ถาม | ถาม | ถาม | ถาม |
| <! doctype HTML Public ISO/IEC 15445: 1999 // Markup Hypertext DTD ภาษา // en> | S | S | S | S | S | อัน | อัน | อัน | ถาม |
| <! doctype html> | ถาม | S | S | S | S | อัน | อัน | อัน |
รหัสการดมกลิ่น Doctype ของ Moziila ได้รับการแก้ไขอย่างมีนัยสำคัญในเดือนตุลาคม 2543 กันยายน 2544 และมิถุนายน 2545 รัฐที่จัดตั้งขึ้นโดย Mozilla (และ Netscape 6.x) ที่อธิบายไว้ในเอกสารนี้สามารถดูได้ที่ ftp.mozilla.org ตั้งแต่ปี 2000.10.19 เอกสารนี้ไม่ได้กล่าวถึงวิธีการดมกลิ่น Doctype ใน Mozilla M18 (และ Netscape 6.0 PR3) รหัสการดมกลิ่น Doctype ของ Safari ได้รับการแก้ไขอย่างมากตั้งแต่เบต้าสาธารณะครั้งแรก เอกสารนี้ไม่รวมถึงพฤติกรรมเร็วกว่าเวอร์ชัน V73 หรือที่เรียกว่า 0.9
รหัสการดมกลิ่น Doctype ก่อนที่ Konqueror33.5 ดูเหมือนจะมาจาก Safari รุ่นแรก ตอนนี้ Konqueror ตรงกับ Safari และรหัสการดมกลิ่น Doctype มาจาก Mozilla
ดังที่เห็นได้จากตารางการดมกลิ่นของโอเปร่ากำลังเปลี่ยนจาก IE เหมือนเหมือนเป็นเหมือน mozilla แม้ว่า opera9.5 และ 9.6 กำลังย้อนกลับ ในขณะเดียวกันพฤติกรรมเลย์เอาต์ของโหมดโอเปร่าวอร์คถูกเปลี่ยนจากการเลียนแบบโหมด Quirk ของ IE6 เป็นโหมด Quirk ของ Mozilla
ขั้นตอนเหล่านี้สามารถมองเห็นได้ผ่านผังงานในรูปแบบ PDF และ PNG
ขอบคุณ Simon Pieters, Simon Pieters และ Anne Van Kesteren ที่ช่วยฉันแก้ไขตารางรูปแบบและความคิดเห็นของพวกเขาสำหรับโอเปร่ารุ่นต่างๆ ขอบคุณ Simon Pieters ที่ทำผังงาน IE8 อีกครั้ง