Quirks मोड में ब्राउज़र रखने के लिए Doctype छोड़ दें
यदि आप कुछ महीनों से अधिक समय के लिए वेब पेज डिजाइन कर रहे हैं, तो संभवतः आप किसी पृष्ठ को लिखने में कठिनाई से अवगत हैं जो सभी ब्राउज़रों में समान दिखता है । वास्तव में, यह असंभव है। कई ब्राउज़रों को विशेष विशेषताओं के साथ लिखा गया था जो केवल वे संभाल सकते थे। या उनके पास उन चीज़ों को संभालने के विशेष तरीके हैं जो अन्य ब्राउज़रों को कैसे प्रबंधित करते हैं उससे अलग हैं। उदाहरण के लिए:
- नेटस्केप ब्राउज़रों में उपयोग के लिए परतें बनाई गई थीं। वे किसी अन्य ब्राउज़र में काम नहीं करते हैं, और वास्तव में नेटस्केप 6.x + में बहिष्कृत कर दिए गए हैं।
- इनलाइन फ्रेम मूल रूप से केवल इंटरनेट एक्सप्लोरर के लिए बनाए गए थे, और तब से HTML विनिर्देश का हिस्सा बन गए हैं।
- इंटरनेट एक्सप्लोरर 6.0 अतिरिक्त स्थान जोड़ता है (जैसे ए
) आसपास के टैग, जब तक कि आप सभी को एक (लंबी) रेखा पर div की सामग्री लिखते हैं। (आईई 6 में कई और quirks के साथ ही यह एक है।) - नेटस्केप 4.7 उन तालिकाओं को प्रदर्शित नहीं करेगा जो सही HTML में नहीं लिखे गए हैं - यह इसके बजाय एक खाली पृष्ठ दिखाता है। यह नेटस्केप 6 में तय किया गया था।
ब्राउज़र डेवलपर्स के लिए समस्या यह है कि उन्हें ऐसे वेब ब्राउज़र बनाना है जो पुराने ब्राउज़र के लिए बनाए गए वेब पृष्ठों के साथ पीछे संगत हैं। इस समस्या से निपटने के लिए, ब्राउज़र निर्माताओं ने ब्राउज़र के लिए काम करने के लिए मोड बनाए। इन मोडों को एक DOCTYPE तत्व की उपस्थिति या अनुपस्थिति से परिभाषित किया जाता है और वह DOCTYPE कॉल करता है।
डॉक्टरेट स्विचिंग और "क्विर्क मोड"
यदि आप अपने वेब पेज में निम्नलिखित DOCTYPE डालते हैं:
आधुनिक ब्राउज़र (एंड्रॉइड 1+, क्रोम 1+, आईई 6+, आईओएस 1+, फ़ायरफ़ॉक्स 1+, नेटस्केप 6+, ओपेरा 6+, सफारी 1+) निम्न फैशन में इसकी व्याख्या करेगा:
- चूंकि एक सही ढंग से लिखा गया DOCTYPE है, यह मानक मोड ट्रिगर करता है।
- यह एक HTML 4.01 संक्रमणकालीन दस्तावेज़ है
- चूंकि यह मानक मोड में है, इसलिए अधिकांश ब्राउज़र HTML 4.01 संक्रमण के साथ सामग्री को अनुपालन (या अधिकतर अनुपालन) प्रस्तुत करेंगे
और यदि आप अपने दस्तावेज़ में यह डॉक्टरेट डालते हैं:
यह आधुनिक ब्राउज़र को बताता है कि आप अपने एचटीएमएल 4.01 पेज को डीटीडी के सख्त अनुपालन में प्रदर्शित करना चाहते हैं।
ये ब्राउज़र "सख्त" या "मानकों" मोड में जाएंगे और पृष्ठ को मानकों के अनुपालन में प्रस्तुत करेंगे। (इसलिए, इस दस्तावेज़ के लिए, जैसे ब्राउज़र को ब्राउज़र द्वारा पूरी तरह से अनदेखा किया जा सकता है, क्योंकि HTML 4.01 सख्त में FONT तत्व को बहिष्कृत किया गया है।)
यदि आप पूरी तरह से DOCTYPE को छोड़ देते हैं, तो ब्राउज़र स्वचालित रूप से "quirks" मोड में लात मार जाते हैं।
नीचे दी गई तालिका से पता चलता है कि विभिन्न सामान्य DOCTYPE घोषणाओं के साथ प्रस्तुत किए जाने पर सामान्य ब्राउज़र क्या करते हैं।
माइक्रोसॉफ्ट इसे कठिन बनाता है
इंटरनेट एक्सप्लोरर 6 में यह सुविधा भी है कि यदि आप DOCTYPE घोषणा के ऊपर कुछ भी डालते हैं, तो वे क्विर्क मोड में जाएंगे। इसलिए, इन दोनों उदाहरणों में आईई 6 को क्विर्क मोड में रखा जाएगा, भले ही डॉक्टरेट घोषणाएं सख्त मानक मोड में हों:
और एक्सएचटीएमएल 1.1 डॉक्टरेट:
इसके अलावा, यदि आप पिछले आईई 6 प्राप्त करते हैं, तो आपके पास "फीचर" है जो माइक्रोसॉफ्ट आईई 8 और आईई 9 में जोड़ा गया है: मेटा एलिमेंट स्विचिंग और वेबसाइट ब्लैकलिस्टिंग। वास्तव में, इन दो ब्राउज़र संस्करणों में अब सात (!) विभिन्न मोड हैं:
- आईई 5.5 क्विर्क मोड (आईई 8 और 9)
- आईई 7 मानक मोड (आईई 8 और 9)
- आईई 8 लगभग मानक मोड (आईई 8 और 9)
- आईई 8 मानक मोड (आईई 8 और 9)
- आईई 9 लगभग मानक मोड (आईई 9)
- आईई 9 मानक मोड (आईई 9)
- एक्सएमएल मोड (आईई 9)
आईई 8 ने "संगतता मोड" भी पेश किया जहां उपयोगकर्ता प्रतिपादन मॉडल को आईई 7 मोड में बदलने का विकल्प चुन सकता था। इसलिए यदि आप मोड सेट करते हैं तो आप दोनों DOCTYPE और मेटा तत्वों का उपयोग करके सेट करना चाहते हैं, फिर भी आपका पृष्ठ कम मानक-अनुरूप मोड में वापस धकेल दिया जा सकता है।
Quirks मोड क्या है?
क्विर्क मोड सभी अजीब प्रतिपादन और गैर-अनुपालन ब्राउज़र समर्थन और हैक का उपयोग करने में मदद के लिए बनाया गया था जो वेब डिज़ाइनर उन चीजों से निपटने के लिए उपयोग कर रहे थे। ब्राउजर निर्माताओं की चिंता यह थी कि अगर उन्होंने अपने ब्राउज़र को पूर्ण विनिर्देश अनुपालन में बदल दिया, तो वेब डिज़ाइनर पीछे रह जाएंगे।
DOCTYPE स्विचिंग और "क्विर्क मोड" सेट करके यह वेब डिज़ाइनर को यह चुनने की अनुमति देता है कि वे ब्राउज़र को अपने HTML को प्रस्तुत करने के लिए कैसे चाहते थे।
Quirks मोड प्रभाव
क्विर्क मोड में अधिकांश ब्राउज़र उपयोग किए जाने वाले कई प्रभाव हैं:
- कुछ ब्राउज़रों में, बॉक्स मॉडल क्विर्क मोड में बॉक्स मॉडल के आईई 5.5 संस्करण में बदल जाता है।
- कुछ ब्राउज़र टेबल में शैलियों का वारिस नहीं करते हैं
- क्विर्क मोड सीएसएस और सीएसएस लेआउट नाटकीय रूप से पार्सिंग को प्रभावित करता है, यदि आप पृष्ठों को क्विर्क मोड से मानक मोड में परिवर्तित कर रहे हैं, तो अपने सीएसएस लेआउट का परीक्षण करना और बड़े पैमाने पर पार्स करना सुनिश्चित करें।
- Quirks मोड में जब स्क्रिप्टिंग में परिवर्तन के लिए देखें। फ़ायरफ़ॉक्स उदाहरण के लिए आईडी विशेषता काम करता है। आईई 8 और आईई 9 में क्विर्क मोड में स्क्रिप्टिंग के लिए बहुत नाटकीय परिवर्तन हैं।
"लगभग मानक मोड:" में भी अंतर है
- तालिका कोशिकाओं की ऊंचाई केवल छवियों के साथ मानक मोड से अलग गणना की जाती है।
एक डॉक्टरेट कैसे चुनें
मैं अपने लेख DOCTYPE सूची में अधिक जानकारी देता हूं, लेकिन अंगूठे के कुछ सामान्य नियम यहां दिए गए हैं:
- हमेशा मानकों मोड का चयन करें। और वर्तमान मानक का उपयोग करना चाहिए HTML5: जब तक आपके पास HTML5 DOCTYPE का उपयोग करने से बचने का कोई विशिष्ट कारण न हो, तब तक इसका उपयोग करना चाहिए।
- सख्त HTML 4.01 पर जाएं यदि आपको विरासत तत्वों को सत्यापित करने की आवश्यकता है या किसी कारण से नई सुविधाओं से बचना चाहते हैं:
- यदि आपने टेबल में छवियों को काट दिया है और उन्हें ठीक नहीं करना चाहते हैं, तो संक्रमणकालीन HTML 4.01 पर जाएं:
- Quirks मोड में जानबूझकर पृष्ठों को मत लिखो। हमेशा एक DOCTYPE का उपयोग करें। यह आपको भविष्य में विकास के समय पर बचाएगा, और वास्तव में इसका कोई फायदा नहीं होगा। आईई 6 तेजी से लोकप्रियता खो रहा है और इस ब्राउज़र के लिए डिजाइन करके (जो अनिवार्य रूप से क्विर्क मोड में डिज़ाइनिंग है) आप स्वयं को, अपने पाठकों और अपने पृष्ठों को सीमित कर रहे हैं। यदि आपको आईई 6 या 7 के लिए लिखना है, तो आधुनिक ब्राउज़र को क्विर्क मोड में मजबूर करने के बजाय, उन्हें समर्थन देने के लिए सशर्त टिप्पणियों का उपयोग करें।
DOCTYPE का उपयोग क्यों करें
एक बार जब आप इस प्रकार के DOCTYPE स्विचिंग के बारे में जानते हैं, तो आप अपने वेब पृष्ठों को एक DOCTYPE का उपयोग कर सीधे प्रभावित कर सकते हैं जो इंगित करता है कि ब्राउज़र आपके पृष्ठ से क्या अपेक्षा कर सकता है। साथ ही, जब आप DOCTYPE का उपयोग शुरू करते हैं, तो आप HTML लिखेंगे जो वैध होने के करीब है (आपको अभी भी इसे सत्यापित करना चाहिए)। और वैध एक्सएचटीएमएल लिखकर, आप ब्राउज़र निर्माताओं को मानकों के अनुरूप ब्राउज़र बनाने के लिए प्रोत्साहित करते हैं।
ब्राउज़र संस्करण और Quirks मोड
DOCTYPE | एंड्रॉयड क्रोम फ़ायरफ़ॉक्स आईई 8+ आईओएस ओपेरा 7.5+ सफारी | आईई 6 आईई 7 ओपेरा 7 | नेटस्केप 6 |
---|---|---|---|
कोई नहीं | Quirks मोड | Quirks मोड | Quirks मोड |
एचटीएमएल 3.2 | |||
Quirks मोड | Quirks मोड | Quirks मोड | |
एचटीएमएल 4.01 | |||
संक्रमणकालीन | मानक मोड * | मानक मोड * | मानक मोड |
संक्रमणकालीन | Quirks मोड | Quirks मोड | Quirks मोड |
कठोर | मानक मोड | मानक मोड * | मानक मोड |
कठोर | मानक मोड | मानक मोड * | मानक मोड |
एचटीएमएल 5 | |||
मानक मोड | मानक मोड * | Quirks मोड | |
* इस डॉक्टरेट के साथ, ब्राउज़र मानकों के अनुरूप हैं, लेकिन कुछ समस्याएं हैं- परीक्षण करना सुनिश्चित करें। इसे "लगभग मानक मोड" के रूप में भी जाना जाता है। |