2010-04-13 15 views
43

मेरे द्वारा बनाए गए अधिकांश स्क्रिप्ट टैग, मैं हमेशा टैग में type="text/javascript" language="javascript" शामिल करता हूं। हालांकि मेरा मालिक नहीं है। कभी-कभी वह दोनों को छोड़ देता है, कभी-कभी language=javascript उद्धरण के बिना भीटाइप छोड़ना = "टेक्स्ट/जावास्क्रिप्ट" भाषा = "जावास्क्रिप्ट"

अब हमारे टैग के साथ किसी भी प्रमुख ब्राउज़र में कोई समस्या नहीं है। मैं आईई, एफएफ, सफारी और क्रोम के सभी संस्करणों के बारे में बात कर रहा हूं।

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

कोई भी जानता है कि दोनों को शामिल किया जाना चाहिए या सिर्फ एक या क्या एएसपी.नेट में दोनों को छोड़ना ठीक है?

+0

मैं केवल प्रकार का उपयोग करें, मैं किसी भी आधुनिक चश्मा जो भाषा को परिभाषित तो यह बेमानी है के बारे में पता नहीं कर रहा हूँ। मुझे बिल्कुल याद नहीं है, लेकिन मुझे एक बार और भाषा दोनों छोड़ने में परेशानी हो रही है (शायद दृश्य स्टूडियो ने सोचा था कि यह vbscript था)। साथ ही, किसी भी विशेषता मान के आस-पास उद्धरणों का उपयोग करना चाहे या नहीं, आप एक सख्त xhtml 1 doctype का उपयोग कर रहे हैं या नहीं। –

+0

यहां जवाब देखें: http://stackoverflow.com/a/4195441/260080 –

उत्तर

70

मैं इस अब अद्यतन किया जाना चाहिए कि परिदृश्य काफ़ी बदल गया है लगता है:

एक HTML5 doctype के लिए, यह नहीं रह गया है आवश्यक है। उदाहरण के लिए: हम इसे स्टैक ओवरफ़्लो पर यहां पृष्ठों से बाहर छोड़ देते हैं। यदि आप एक HTML5 ड्यूट टाइप का उपयोग कर रहे हैं तो यह पूरी तरह से वैकल्पिक है और text/javascript पर डिफ़ॉल्ट है, इसलिए आप इसे हर मौजूदा (या यहां तक ​​कि बहुत पुराने) ब्राउज़र में छोड़कर बिल्कुल ठीक कर रहे हैं। वास्तव में, यह HTML4 में भी सच था हालांकि सख्ती से मान्य HTML नहीं।

एक HTML4 डॉक्ट टाइप (वैध होने के लिए) के लिए, आपको इसकी आवश्यकता है। एक ब्राउज़र के लिए वास्तव में काम करने के लिए, इसकी कड़ाई से जरूरी नहीं है और यह ठीक से व्यवहार करेगा (यह नेटस्केप 2 पर वापस आ गया है) - लेकिन यह मान्य HTML नहीं होगा। यदि आपके पास HTML4 डॉक्ट टाइप है, तो उसे चारों ओर रखें और मान्य रहें - अरे, क्यों नहीं?


मूल उत्तर:

मैं type="text/javascript" का प्रयोग करेंगे सभी मौजूदा ब्राउज़र में सुरक्षा के लिए, क्यों 21 पात्रों को बचाने के लिए वहाँ में अस्पष्टता छोड़? language="" however is deprecated, I'd leave it out

इसके अलावा, कोई भी वैधकर्ता एक त्रुटि फेंकने जा रहा है, हालांकि यह ब्राउज़र के अंदर काम करेगा (जब तक कि आप कुछ बहुत पुराना से निपट रहे हों)।

+9

कोई विचार नहीं कि यह क्यों नीचे मतदान किया गया था; ध्वनि सलाह की तरह लगता है। – Noldorin

+5

@ नोल्डोरिन - मुझे लगता है कि कोई असहमत है ... यह शर्म की बात है कि आपको कम वोट देने पर टिप्पणी छोड़ने के लिए मजबूर नहीं किया जाता है, अगर कोई जवाब गलत है तो यह दूसरों के लिए मददगार होगा * क्यों *, ओह ठीक है। –

+2

@ नोल्डोरिन: सहमत। इतने सारे लोग स्पष्टीकरण के बिना downvote। कितनी शर्म की बात है। हालांकि, आप मुझसे +1 प्राप्त करते हैं। –

15

w3c spec के अनुसार, type आवश्यक है। तो ... हालांकि अधिकांश ब्राउज़र type के बिना काम करने के लिए पर्याप्त मजबूत होने जा रहे हैं, भले ही इसे text/javascript पर स्पष्ट रूप से सेट करना अच्छा अभ्यास है।

+2

+1 W3C spec –

+5

'0'' में टाइप प्रकार के लिए एचटीएमएल 5 पर वैकल्पिक है। यह HTML4 में आवश्यक है।देखें: http://stackoverflow.com/a/4195441/260080 –

2

एएसपी.नेट के पास कुछ भी करने के लिए कुछ भी नहीं है। xhtml 1.0 आपको उद्धरण के साथ टाइप = "टेक्स्ट/जावास्क्रिप्ट" का उपयोग करने का निर्देश देता है, अन्यथा आप वैध xhmtl का उत्पादन नहीं कर रहे हैं।

अपने पृष्ठों के विरुद्ध w3c validator चलाएं, और कृपया जो भी पूछता है उसका अनुपालन करें।

+0

यदि आप runat = "sever" जोड़ना चाहते हैं तो यह संभव है कि एएसपीनेट उचित xhtml उत्पन्न कर सके, पता नहीं, लेकिन इसके बारे में उसका सवाल पूरी तरह से बंद नहीं है। –

+0

+1 "w3c validator चलाएं और कृपया जो भी पूछता है उसका अनुपालन करें"। कम से कम एचटीएमएल पेज कम से कम विकास के दौरान वैध लोगों की तुलना में बेहतर काम करता है। डब्लूआरसी सत्यापनकर्ता ने हमेशा मुझे एक पृष्ठ के विकास के दौरान एक अच्छी मात्रा में बचाया, क्यों कुछ डीआईवी ब्लॉक दिखाना नहीं है या उचित स्थान पर नहीं दिख रहा है और सीएसएस या ब्राउज़र प्रतिपादन पर आरोप लगाया गया है जब यह केवल एक HTML गलती है वैधकर्ता तुरंत स्पॉट करेगा। आपको यह बताने के लिए बेकार है कि एक अच्छा एफएफ एक्सटेंशन है जो आपको पृष्ठ को तत्काल सत्यापित करने देता है: https://addons.mozilla.org/it/firefox/addon/html-validator/ –

8

यदि दस्तावेज़ को HTML5 के रूप में पार्स किया गया है, तो भाषा जावास्क्रिप्ट को डिफ़ॉल्ट कर देगी, और किसी भी प्रकार की कोई विशेषता आवश्यक नहीं है (भविष्य के संदर्भ में, HTML5 में कोई भाषा विशेषता नहीं है)।

यदि आप HTML 4.x या XHTML 1.x को खानपान कर रहे हैं, तो डिफ़ॉल्ट स्क्रिप्टिंग भाषा माना जाता है कि सामग्री-स्क्रिप्ट-प्रकार शीर्षलेख के मान से निर्धारित किया गया है, चाहे स्थानीय रूप से मेटा/मेटा टैग (स्थानीय प्राथमिकता) या एक HTTP शीर्षलेख (कम प्राथमिकता) के रूप में। प्रकार 4 विशेषता अभी भी एचटीएमएल 4 द्वारा आवश्यक है।एक्स भले ही सामग्री-स्क्रिप्ट-प्रकार शीर्षलेख मौजूद है (स्थानीय रूप से या अन्यथा) क्योंकि डिफ़ॉल्ट स्क्रिप्टिंग भाषा केवल यह प्रभावित करती है कि ऑनलोड, ऑनक्लिक इत्यादि जैसे गुणों के मान कैसे प्रबंधित किए जाते हैं। जब तक आप पुराने ब्राउज़र (जैसे IE4, NN4, शायद IE5/Mac) को खानपान कर रहे हैं, तब तक "विशेषता/जावास्क्रिप्ट" के साथ टाइप विशेषता को कीवर्ड विशेषता के बजाय जावास्क्रिप्ट के मामले में उपयोग किया जाना चाहिए, याद रखें कि वहां था विंडोज 98 के लिए आईई 6 का एक संस्करण, इसलिए भाषा विशेषता निश्चित रूप से पुरानी है)।

जानकारी का एक आखिरी बिट: तकनीकी रूप से बोलने, एप्लिकेशन/एक्स-जावास्क्रिप्ट जावास्क्रिप्ट के लिए सही मूल्य है (जब तक यह मुझे बिना जानने के आवेदन/जावास्क्रिप्ट बन गया), लेकिन दुर्भाग्यवश पाठ/जावास्क्रिप्ट शब्द में सबसे बड़ा समर्थन वाला है क्रॉस-ब्राउज़र संगतता का।

+0

यह 'एप्लिकेशन/जावास्क्रिप्ट' है, बीटीडब्ल्यू –

+0

http: //stackoverflow.com/questions/189850/what-is-the-javascript-mime-type-what-belongs-in-the-type-attribute-of-a-script –

10

Douglas Crockford, महान अधिकारियों और जावास्क्रिप्ट के शिक्षकों में से एक, has this to say:

language="javascript"

यह विशेषता मान्य नहीं है। यह का उपयोग अन्य प्रोग्रामिंग भाषाओं और जावास्क्रिप्ट के विशिष्ट संस्करणों का चयन करने के लिए किया गया था। आपको इसकी आवश्यकता नहीं है इसका उपयोग न करें।

type="text/javascript"

यह विशेषता वैकल्पिक है। चूंकि नेटस्केप 2, सभी ब्राउज़रों में डिफ़ॉल्ट प्रोग्रामिंग भाषा जावास्क्रिप्ट है। एक्सएचटीएमएल में, यह विशेषता आवश्यक और अनावश्यक है। एचटीएमएल में, इसे छोड़ना बेहतर है। ब्राउज़र जानता है कि क्या करना है।

अपने मालिक को "सही" या "गलत" कारणों के लिए यह कर रहा हो सकता है (यानी वह Crockford की सलाह का पालन किया जा सकता है, या वह सिर्फ आलसी हो सकता है), लेकिन मुझे नहीं लगता कि आप जरूरी बना सकते हैं एक निर्णय अगर उसका बाकी एचटीएमएल और जेएस मैला है, तो यह एक और बात है। मैं उद्यम करता हूं कि स्क्रिप्ट टैग की सामग्री टैब आकार या ब्रेस प्लेसमेंट जैसी धार्मिक चीज़ों से अधिक हो सकती है।

संपादित करें: @ कॉफ़ीडेडिक्ट ने इंगित किया है कि टैग में उचित गुण डालने से उसकी संकलन गड़बड़ नहीं होती है। मैं कहूंगा कि इस बात पर कोई विचार नहीं है कि गुण सख्ती से सही या आवश्यक हैं, क्योंकि परियोजनाओं को हमेशा त्रुटियों या चेतावनियों के बिना साफ-सफाई करना चाहिए। अगर वे परियोजना मानक का हिस्सा हैं, तो वैधकर्ताओं के लिए भी यही है।

+0

यह निर्णय के बारे में नहीं है ... शायद यह हो सकता है है! यह मेरे दिमाग में मैला है जब डेवलपर्स उचित गुणों में रखने के लिए समय नहीं लेते हैं। आप कभी नहीं जानते कि क्या बदल सकता है या क्या एक-एक समस्या हो सकती है। साथ ही, जैसा कि अन्य लोगों ने कहा है कि मेरे लिए मेरे संकलक पर अनुचित मार्क-अप के बारे में चेतावनी देखने के लिए नरक के रूप में यह परेशान है। जब हम वहां मौजूद सामान छोड़ देते हैं तो यह अन्य डेवलपर्स का जीवन आसान नहीं बनाता है। हमें "धारणा" पर निर्भर नहीं होना चाहिए कि सभी ब्राउज़र हमेशा हमारे गधे को बचाने के लिए जा रहे हैं। और मैं असहमत हूं कि धर्म को उचित मार्क-अप ओवरराइड करना चाहिए। – PositiveGuy

+4

क्रॉकफ़ोर्ड गलत है, उदाहरणों में से एक। HTML के लिए वर्तमान मानक टाइप विशेषता अनिवार्य बनाता है। एचटीएमएल 5 के लिए ड्राफ्ट इसे वैकल्पिक बनाते हैं। – Quentin

+0

मुझे नहीं पता कि यह आलसी है या नहीं; मेरा मतलब है, यदि वे आवश्यक नहीं हैं तो अतिरिक्त वर्ण टाइप क्यों करें और वे कुछ बैंडविड्थ बर्बाद कर देते हैं? एचटीएमएल भी क्लीनर दिखता है। इसके अलावा, हमें हर समय साइटों को अपडेट करना पड़ता है, यह कहने के लिए कि मई में यह कुछ दिन बदल जाएगा और वास्तव में यह मायने रखता है कि मेरे लिए म्यूट लगता है - वेब लगभग कुछ अपेक्षित तरीके से बदल जाएगा, एक वैकल्पिक विशेषता जोड़ने से आपको साइट को अधिक कठोर तरीके से अपडेट कर देगा। यदि यह कभी आपकी साइट को तोड़ देता है, तो इसे रिफैक्टर करने में 15 मिनट लगेंगे और इसे जोड़ना होगा ... "जोखिम प्रबंधन" टोटेम ध्रुव पर कम लगता है। – jdg

14

एचटीएमएल 5 के लिए W3C सिफारिश का कहना है कि आप

type="text/javascript"

शामिल करने के लिए ब्राउज़र मान लिया गया है कि यह पाठ/जावास्क्रिप्ट है जब तक अन्यथा एक अलग प्रकार के रूप में कहा गया है की जरूरत नहीं है।

http://dev.w3.org/html5/spec/Overview.html#the-script-block-s-type

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