2009-09-10 11 views
5

एएसपी.नेट, जावास्क्रिप्ट, सीएसएस, इत्यादि का उपयोग करने वाली एक बड़ी विरासत परियोजना को देखते हुए, मैं सोच रहा था कि वेब पेजों के डॉक्टरेट को बदलना, कहें, एचटीएमएल 4.0 संक्रमण से एक्सएचटीएमएल 1.0 संक्रमणकालीन (या दूसरी तरफ) किसी भी तरह से वेब पृष्ठों के जावास्क्रिप्ट कार्यों को तोड़ सकता है।क्या DOCTYPE की पसंद जावास्क्रिप्ट कोड द्वारा देखी गई डीओएम को प्रभावित करती है?

वेबसाइटों के प्रतिपादन (सीएसएस) को अलग करने के तरीके के बारे में बहुत सारे लेख और चर्चाएं हैं, लेकिन मुझे किसी भी कोड को तोड़ने के विषय पर कुछ भी नहीं दिख रहा है।

मैं आम तौर पर सामान्य रूप से देखने के लिए चीजों के लिंक की तलाश कर रहा हूं ताकि मौजूदा कोड में संभावित संभावित समस्याओं को बेहतर तरीके से और नए कोड लिखते समय समस्याएं पैदा करने से बचें।

उत्तर

5

बदलते DOCTYPE किसी भी जावास्क्रिप्ट कार्यों वास्तव में पर निर्भर करता है टूट जाएगा चाहे कैसे रक्षा उन कार्यों तैयार कर रहे हैं :)

उदाहरण के लिए, जब दस्तावेज़ quirks मोड, document.body (शरीर) में प्रदान की गई है एक तथाकथित "जड़ हो जाता है तत्व "; जब मानक मोड में प्रस्तुत किया जाता है, तो मूल तत्व आमतौर पर document.documentElement (HTML) होता है। यह एक बल्कि पर्याप्त भेद है। यदि ब्राउज़र स्क्रिप्ट निर्धारित करने वाली एक स्क्रिप्ट हमेशा clientWidth/clientHeightdocument.documentElement के गुणों से संबंधित प्रश्न पूछती है, तो यह स्पष्ट रूप से क्विर्क मोड में गलत परिणाम की रिपोर्ट करेगा (चूंकि, आईआईआरसी, document.documentElement.clientWidth/clientHeight स्क्रीन तत्वों के बजाय HTML तत्व के आयामों का प्रतिनिधित्व करेगा)।

अधिकांश जेएस पुस्तकालय आमतौर पर स्पष्ट रूप से बताते हैं कि क्विर्कमोड समर्थित है (हम - प्रोटोटाइप.जेएस - उदाहरण के लिए, क्विर्क मोड का समर्थन नहीं करते हैं)।

ब्राउज़र के लिए एचटीएमएल बनाम एक्सएचटीएमएल, क्रम में की भाषण XHTML के रूप में दस्तावेज़ प्रस्तुत करने के लिए, आप सब से पहले उचित "सामग्री-प्रकार" हेडर (यानी आवेदन/xhtml + xml) के साथ सेवा करते चाहिए। यदि आप केवल एक्सएचटीएमएल में डक्ट टाइप बदलते हैं, लेकिन फिर भी "टेक्स्ट/एचटीएमएल" के रूप में दस्तावेज़ की सेवा करते हैं, तो अधिकांश ब्राउज़र मुझे पता है कि अभी भी HTML दस्तावेज़ के रूप में इसे पार्स (और प्रस्तुत) करेगा।

ध्यान दें कि आज तक, आईई "वास्तविक" एक्सएचटीएमएल सामग्री को समझ नहीं पा रहा है, यही कारण है कि पाठ/एचटीएमएल (HTML4.01 डक्टटाइप के साथ) दस्तावेजों की सेवा करना एक अनुशंसित तरीका है (जब तक IE समर्थित ब्राउज़र में नहीं है , बेशक)।

जहाँ तक 'असली' XHTML दस्तावेजों में डोम विशेषताओं, मैंने सुना है के रूप में है कि document.write की तरह कुछ बातें 'काम नहीं करता "और तक पहुँचने नोड गुण हमेशा getAttribute/setAttribute के माध्यम से किया जाना चाहिए कि (बल्कि सरल संपत्ति accessors के माध्यम से की तुलना में) । आईआईआरसी, innerHTML के साथ कुछ मुद्दे भी हैं।

"असली" एक्सएचटीएमएल दस्तावेजों में डीओएम के बारे में जानकारी की कमी शायद सामान्य वेब के लिए दस्तावेजों/अनुप्रयोगों में इसकी अव्यवहारिकता के कारण है (यानी आईई की इसके समर्थन की कमी है)।

+0

कुछ दस्तावेज़ मोड में डोम तत्व ऑब्जेक्ट.प्रोटोटाइप से प्राप्त नहीं होते हैं, और इसके कारण वे कस्टम विधियों या गुणों के साथ विस्तार योग्य नहीं हैं ... – inf3rno

1

आप DTD उपयोग कर रहे हैं:

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

अपनी साइट है आईई में quirks मोड और आधुनिक ब्राउज़रों में लगभग मानकों मोड, और में क्योंकि एक्सएचटीएमएल 1.0 संक्रमणकालीन DTD पेज में होने के लिए बाध्य मानक मोड में जावास्क्रिप्ट (विशेष रूप से आईई में) में लेआउट समस्याएं और संभावित समस्याएं होंगी क्योंकि डीओएम क्विर्क बनाम मानकों में कैसे प्रस्तुत किया जाता है, इसके बीच कुछ महत्वपूर्ण अंतर हैं।

लेकिन अगर एचटीएमएल 4.01 DTD प्रणाली पहचानकर्ता शामिल हैं:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 

यह पहले से ही मानकों मोड में होना चाहिए। आप अपनी साइट पर 'document.compatMode' से पूछताछ करके सत्यापित कर सकते हैं, अगर यह क्विर्क मोड में अन्यथा 'बैककंपेट' मानकों में है तो यह 'सीएसएस 1 कॉम्पेट' कहेंगे।

मुझे लगता है कि आप एक्सएचटीएमएल 1.0 संक्रमण के साथ टेक्स्ट/एचटीएमएल की सामग्री-प्रकार की सेवा करने जा रहे हैं।

+0

मैंने आंशिक/पूर्ण कार्यप्रणाली के मुद्दे की पुष्टि की। मैंने आंशिक/पूर्ण xhtml 1.0 डॉक्टरेट के लिए एक समान परीक्षण किया और ऐसा लगता है कि और ब्राउज़र पेज रेंडर करने के लिए कारण मानक अनुपालन मोड में, यानी आंशिक xhtml डॉक्ट टाइप पृष्ठ को क्विर्क मोड में मजबूर नहीं करता है जैसा कि HTML 4.01 एक के मामले में है। अजीब। –

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

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