2010-11-04 9 views
143

इस सवाल के आधार पर: jQuery code not working in IEजावास्क्रिप्ट MIME प्रकार

तो text/javascript HTML दस्तावेज़ में प्रयोग किया जाता है तो इंटरनेट एक्सप्लोरर यह समझ सकते हैं। लेकिन मैं सोच रहा हूं, आप application/javascript का उपयोग कब करेंगे, और सबसे महत्वपूर्ण बात यह है कि आप text/javascript के बजाय इसका उपयोग क्यों करेंगे?

+0

संभव डुप्ले/स्पष्टीकरण: http://stackoverflow.com/questions/876561/when-serving-javascript-files-is-it-better-to-use-the-plication-javascript-or – Benn

+0

यह भी देखें http: //stackoverflow.com/questions/2325571/for-http-responses-with-content-types-suggesting-character-data-which-charset-sh – Gumbo

+0

संभावित डुप्लिकेट [जावास्क्रिप्ट एमआईएमई प्रकार क्या है? स्क्रिप्ट टैग के प्रकार विशेषता में क्या संबंधित है?] (http://stackoverflow.com/questions/189850/what-is-the-javascript-mime-type-what-belongs-in-the-type-attribute-of-a-script) – Bergi

उत्तर

224

सिद्धांत में, RFC 4329, application/javascript के अनुसार।

application होने का कारण यह है कि यह प्रकार पठनीय या निष्पादन योग्य है या नहीं। ऐसा इसलिए है क्योंकि सामान्य charset पैरामीटर की बजाय भाषा/प्रकार द्वारा निर्धारित कस्टम वर्ण-निर्धारण तंत्र हैं। text का एक उप प्रकार एक प्रॉक्सी द्वारा एक अन्य वर्णमाला में ट्रांसकोड करने में सक्षम होना चाहिए, वर्णमाला पैरामीटर बदलना। यह जावास्क्रिप्ट के लिए सच नहीं है क्योंकि:

ए। आरएफसी का कहना है कि उपयोगकर्ता-एजेंटों को टाइप निर्धारित करने के लिए स्क्रिप्ट पर बीओएम-स्नीफिंग करना चाहिए (मुझे यकीन नहीं है कि कोई ब्राउजर वास्तव में ऐसा करता है);

बी। ब्राउज़र अन्य जानकारी का उपयोग करते हैं- पृष्ठ के एन्कोडिंग सहित और में वर्णमाला निर्धारित करने के लिए script charset विशेषताएँ ब्राउज़ करें। इसलिए संसाधन को ट्रांसकोड करने का प्रयास करने वाली कोई भी प्रॉक्सी अपने उपयोगकर्ताओं को तोड़ देगी। और चरित्र (बेशक वास्तविकता में कोई-भी कभी ट्रांसकोडिंग प्रॉक्सी वैसे भी उपयोग करता है, लेकिन यह है कि इरादतन किया है।)

इसलिए फ़ाइल का सही बाइट्स बिल्कुल संरक्षित किया जाना चाहिए, जो यह बनाता है एक द्विआधारी application प्रकार नहीं तकनीकी रूप से -आधारित text

इसी कारण से, application/xml आधिकारिक तौर पर text/xml से अधिक पसंद किया गया है: एक्सएमएल का अपना इन-बैंड वर्णसेट सिग्नलिंग तंत्र है। और एक्सएमएल के लिए हर कोई application को अनदेखा करता है।

text/javascript और text/xml अधिकारी सही काम नहीं हो सकता है, लेकिन क्या हर कोई संगतता कारणों के लिए आज का उपयोग करता है देखते हैं, और कारणों क्यों वे सही काम नहीं कर रहे हैं व्यावहारिक रूप से पूरी तरह से महत्वहीन बोल रहे हैं।

+3

आपको महान स्पष्टीकरण धन्यवाद। –

+4

सबसे अधिक "संगतता" समाधान प्रतिक्रिया में किसी भी सामग्री प्रकार को शामिल नहीं करना है। आरएफसी का कहना है कि बिना किसी स्पष्ट सामग्री प्रकार के, रिसीवर इसे "संदर्भ द्वारा" * की व्याख्या करेगा * जो हमेशा पहले ब्राउज़र से सभी ब्राउज़रों के लिए सही व्यवहार है – Pacerier

+0

विवरण के लिए धन्यवाद। –

5

application क्योंकि .js -फाइल कुछ ऐसा नहीं है जो उपयोगकर्ता पढ़ना चाहता है लेकिन कुछ ऐसा निष्पादित किया जाना चाहिए।

+0

यह आधिकारिक उत्तर है लेकिन आईई इस पर chokes। – Benn

+15

@ बेन: शायद क्योंकि आईई उपयोगकर्ताओं को सभी जेएस फाइलों को पढ़ना है क्योंकि वे ठीक से निष्पादित नहीं करते हैं? कम से कम, यह माइक्रोसॉफ्ट द्वारा ईमानदार है;) – thejh

+0

अपनी टिप्पणी से प्यार करें, लेकिन दुर्भाग्यवश लोग जो जावास्क्रिप्ट को नहीं पढ़ सकते हैं अभी भी आईई का उपयोग करते हैं, इसलिए हमें इससे निपटना होगा :( –

15

जावास्क्रिप्ट के एमआईएमई प्रकार के साथ समस्या यह है कि वर्षों के लिए मानक नहीं रहा है। अब हमें एप्लिकेशन/जावास्क्रिप्ट आधिकारिक एमआईएम प्रकार के रूप में मिला है।

लेकिन असल में, एमआईएमई प्रकार कोई फर्क नहीं पड़ता, क्योंकि ब्राउज़र स्वयं ही प्रकार निर्धारित कर सकता है। यही कारण है कि एचटीएमएल 5 चश्मे बताते हैं कि type="text/javascript" अब आवश्यक नहीं है।

1

एप्लिकेशन-जावास्क्रिप्ट उपयोग करने के लिए सही प्रकार है लेकिन चूंकि यह IE6-8 द्वारा समर्थित नहीं है, इसलिए आप टेक्स्ट/जावास्क्रिप्ट के साथ फंस जाएंगे। यदि आपको वैधता की परवाह नहीं है (HTML5 को बाहर रखा गया है) तो बस एक प्रकार निर्दिष्ट न करें।

+0

आपको यह कहां मिलेगा? मुझे पूरा यकीन है कि यह समर्थित है। या, कम से कम, इसे अनदेखा कर दिया जाएगा। – Zenexer

+0

@ जेनेक्सर ने [मेरे प्रश्न का उत्तर] [http://stackoverflow.com/a/4101106/124119) पढ़ा। लगता है कि आईई संगतता का मतलब कोई 'एप्लिकेशन/जावास्क्रिप्ट' नहीं है। –

+0

@ कैमिलो मार्टिन मैं इसे आईई के साथ हर समय 6 तक ठीक करता हूं। वे सिर्फ जावास्क्रिप्ट के लिए डिफ़ॉल्ट हैं। – Zenexer

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