2009-06-02 12 views
48

मैं अपने एचटीएमएल कोड के शीर्ष पर एक टिप्पणी (<!-- this --> शैली) रखना चाहता हूं, जो DOCTYPE घोषणा से पहले है। क्या यह मानकों के अनुरूप है? क्या यह प्रमुख ब्राउज़रों द्वारा समर्थित है? क्या ऐसा करने में कोई समस्या है?क्या DOCTYPE घोषणा से पहले टिप्पणियां दिखाई दे सकती हैं?

उत्तर

34

<!DOCTYPE> लिखना सबसे पहले निश्चित रूप से सर्वोत्तम अभ्यास है।

मैं एक लंबे, लंबे समय पहले अजीब समस्याओं याद जहां कुछ ब्राउज़र (शायद IE6) एक <!DOCTYPE> नजरअंदाज कर दिया क्योंकि इसमें कुछ पहले प्रतीत होने वाला था - मैं सिर्फ खाली स्थान के बारे में सोच है, लेकिन शायद यह एक टिप्पणी थी। किसी भी मामले में, यह ट्रैक करने के लिए एक भयानक, भयानक बग था, और निश्चित रूप से <!DOCTYPE> से पहले टिप्पणियों या सफेद जगहों का कोई अच्छा कारण नहीं है।

लेखन <!DOCTYPE> पहले है मैं तो बस कुछ अनुभवी वेब डेवलपर्स भयानक, मायावी कीड़े से बचने के लिए कर कहेंगे,।

+0

धन्यवाद, मैं इसके बजाय एचटीएमएल टैग के बाद अपनी टिप्पणी करने जा रहा हूं। –

+0

यदि आप इसे सही तरीके से काम करना चाहते हैं तो इसे समेत सभी चीज़ों से पहले आने की आवश्यकता है। – nertzy

+7

यह बस मुझे थोड़ा सा। मैंने यह पता लगाने की कोशिश में 4 घंटे बिताए कि आईई 7/8 ने प्लेस से बाहर क्यों किया।उचित समापन ब्रेसिज़ और सामान के लिए प्रत्येक टैग की जांच करने के बाद, मैंने एक नई फाइल बनाई और लाइन लाइन (टिप्पणियों पर नहीं) की प्रतिलिपि बनाई और सब ठीक काम किया। पूरी तरह से परेशान, मैंने यादृच्छिक रूप से सोचा "क्या होगा ...?" जब मैंने मूल फ़ाइल में DOCTYPE से ठीक पहले टिप्पणी पंक्ति देखी। मेरा अपराधी था! – dariopy

12

हालांकि मानक मानते हुए यह स्वीकार्य है, लेकिन आप निश्चित रूप से इसे टालना चाहते हैं, क्योंकि यह आईई को क्विर्क मोड में फेंक देगा।

(Triggering different rendering modes देखें)

+4

DOCTYPE से पहले व्हाइटस्पेस के अलावा कुछ भी आईई (6 और 7, कम से कम - 8 के बारे में निश्चित नहीं) quirks मोड में फेंकता है। –

3

कि IE7 quirks मोड में रेंडर करने के लिए के रूप में अगर एक doctype वहाँ बिल्कुल नहीं थी कारण हो सकता है, this page के अनुसार।

0

डॉक्टरेट की अनुमति देने से पहले टिप्पणियां, लेकिन सभी आईई संस्करण क्विर्क मोड पर वापस जाने के कारण। वे वास्तव में, कभी-कभी उस उद्देश्य के लिए उपयोग किए जाते हैं। एक्सएमएल घोषणा (<?xml version ...?>) का प्रभाव समान है, आईई 6 में और से नीचे है।

118

यह पूरी तरह से वैध

<!-- this, --> 
<!DOCTYPE html> 

करने के लिए हालांकि, यह quirks मोड में IE के सभी संस्करणों लाता है (जब तक यह मजबूर नहीं quirks मोड में है - नीचे Gotchas अनुभाग देखें)। सबसे आसान है DOCTYPE के नीचे टिप्पणी को स्थानांतरित करना।

<!DOCTYPE html> 
<!-- this, --> 

लेकिन एक और तरीका है इस जैसे एक उपयुक्त सशर्त टिप्पणी में "अपग्रेड" टिप्पणी,:

<!--[if !IE]> this <![endif]--> 
<!DOCTYPE html> 

स्पष्टीकरण: एक सशर्त टिप्पणी करता है आईई की दुनिया में पर टिप्पणी के रूप में नहीं।

वैकल्पिक वाक्य रचना: भूल करने के लिए/याद रखें कि सशर्त टिप्पणियाँ HTML मानक में एक Microsoft घुसपैठ कर रहे हैं, एक सकता है उदाहरण के इसी तरह, विशेष रूप से आईई को लक्षित करने के

<!--[if anybrowser]> this <![endif]--> 
<!DOCTYPE html> 

है के लिए, एक

कर सकता है
<!--[if !anybrowser]> this <![endif]--> 
<!DOCTYPE html> 

Gotchas

एक टिप्पणी अंदर एक सशर्त टिप्पणी करता है, तो आईई इसे देखता है quirks मोड में आईई लाएगा (जो है: अगर एक का उपयोग करता है एक [अगर आईई] हालत, या करने के लिए एक बराबर [अगर आईई] - जैसे [अगर! anybrowser] शर्त जो मैंने उपरोक्त उल्लेख किया है।)। तो, उदाहरण के लिए, इस IE quirks मोड में लाना होगा:

<![if IE]><!-- this --><![endif]> 
<!DOCTYPE html> 

के रूप में होगा

<!--[if IE]><!--><!-- this <![endif]--> 
<!DOCTYPE html> 

और कई अन्य वेरिएंट। जबकि उदाहरण के लिए

<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]--> 
<!DOCTYPE html> 

होगा नहीं कारण quirks मोड, क्योंकि यहाँ सशर्त टिप्पणी किसी अन्य सामग्री से पहले एक DOCTYPE है, और इस तरह आईई मानता है कि पेज के पहले सामग्री है एक डॉक्टरेट X-UA- संगत -

अंत में, नवीनतम आईई संस्करण, IE8 और IE9, एक और माइक्रोसॉफ्ट आविष्कार के उपयोग के द्वारा मानकों-मोड (और quirks मोड के रूप में अच्छी तरह) मजबूर किया जा सकता है निर्देश। http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx तो

<!-- this --> 
<!DOCTYPE html> 
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]--> 

होगा बल IE8 और IE9 देखें उस मामले में, में quirks मोड मोड कोई quirks है, जबकि IE6 और IE7 में रहेगा। जबकि, इसके विपरीत में, इस

<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]--> 
<!DOCTYPE html> 

होगा बल IE8 और IE9 मानकों मोड में, कि सशर्त टिप्पणी की सामग्री का DOCTYPE साथ नहीं शुरू करता है के बावजूद। और आईई 6 और आईई 7 नो-क्विर्क मोड में भी बने रहेंगे क्योंकि सशर्त टिप्पणी उन्हें लक्षित नहीं करती है।

+3

मैंने बहुत पहले डॉक्टरेट के बाद अपनी शीर्ष टिप्पणी डालकर पूरे मुद्दे से बचने का फैसला किया था, लेकिन आईई के व्यवहार के विस्तृत (और आकर्षक) स्पष्टीकरण के लिए धन्यवाद। –

+2

ए + :) मैं इसके लिए अपना शब्द लेने जा रहा हूं - यह एक अविश्वसनीय रूप से विस्तृत प्रतिक्रिया है - धन्यवाद, मुझे यह बहुत पसंद है। आप स्पष्ट रूप से खरगोश के चेहरे पर नहीं रुक गए: –

संबंधित मुद्दे