क्या आपको अपने <script> टैग्स में निर्दिष्ट पाठ / जावास्क्रिप्ट की आवश्यकता है?


157

मैंने कहीं पढ़ा है कि अब आपको अपने स्क्रिप्ट टैग में type="text/javascript"अजीब CDATAऔर अजीब जैसी चीजों की आवश्यकता नहीं है <!--। इसलिए, इसके बजाय:

<script type="text/javascript">
//<![CDATA[
<!--

    //your script here

-->
//]]>
</script>

आप बस करेंगे:

<script>
    //your script here
</script>

मुझे याद नहीं है कि मैं यह कहाँ पढ़ता हूँ। यह मेरे विचार से एक Google या याहू इंजीनियर से था, और उन्होंने विशेष रूप से उल्लेख किया कि कौन से ब्राउज़र को इन पुरातन निर्माणों की आवश्यकता है और क्यों। किसी को भी पता है कि यह किस ब्लॉग पोस्ट / लेख के बारे में बात की गई थी, या इस बारे में एक अच्छा संसाधन है?


नए ब्राउज़रों के लिए, लेकिन पुराने पर (यदि ऐसा अभी भी मौजूद है) <! - -> की आवश्यकता है। कुछ एप्स में टाइप के बारे में अगर छोड़ा नहीं गया है, तो सही की जरूरत है।
बाकुदन

1
CDATA के बारे में अच्छा पढ़ा: stackoverflow.com/questions/66837/…
kapa

1
हर बार जब मैं text/javascriptनिर्दिष्ट के साथ एक फ़ाइल खोलता हूं , तो मैं इसे हटा देता हूं। यह शोर है।
मफिन मैन

स्वीकृत उत्तर में HTML5 दिशानिर्देशों के बारे में अद्यतित जानकारी रखने वाली एक बहुत ही संबंधित पोस्ट यहाँ है
RBT

जवाबों:


135

टैग पर क्रॉकफोर्ड का लेखन<script> देखें , विशेष रूप से:

<!-- //-->स्क्रिप्ट के साथ हैक का उपयोग न करें । यह पहली पीढ़ी के ब्राउज़र नेटस्केप 1 और मोज़ेक पर पाठ के रूप में दिखाने से लिपियों को रोकने का इरादा था। यह कई वर्षों से आवश्यक नहीं है। <!-- //-->एक HTML टिप्पणी का संकेत माना जाता है। टिप्पणियों को अनदेखा किया जाना चाहिए, संकलित और निष्पादित नहीं किया जाना चाहिए। इसके अलावा, एचटीएमएल टिप्पणियों को शामिल नहीं किया जाता है --, इसलिए एक स्क्रिप्ट जिसमें डिक्रीमेंट्स में एचटीएमएल त्रुटि होती है।

...

type="text/javascript"

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


75
आवश्यक और अनावश्यक? क्या मैं कुछ भूल रहा हूँ?
इज़्काता

17
@ इज़काटा, यह सत्यापन के लिए आवश्यक है, लेकिन इसका कोई प्रभाव नहीं है।
bdukes

14
"ब्राउज़र जानता है कि क्या करना है" ... अभी के लिए। अगले हफ्ते क्या होगा जब रूबस्क्रिप्ट (मैंने इसे एक उदाहरण के रूप में बनाया) लोकप्रिय है और हर कोई इसे अपनाने के लिए अपनी पैंट को तरसता है? यह उसी तरह की अदूरदर्शी सोच है जो लोगों को अपनी फाइलों को "_new" नाम देती है और अन्य लोगों को वर्षों तक भ्रमित करती है। क्या यह "_new" है? या "_new_new"? या "_newer"? IMO यह अदूरदर्शी है।
स्लोबबॉम

18
@Slobaum, HTML5 कल्पना यह बताती है कि यह जावास्क्रिप्ट के लिए चूक है । यदि नए स्क्रिप्ट प्रकार हैं, तो उन्हें केवल नए ब्राउज़र संस्करणों में लागू किया जाएगा जो कि कल्पना को डिफ़ॉल्ट रूप से समर्थन करते हैं।
bdukes

8
यदि RubyScriptयह लोकप्रिय हो जाता है, तो यह समाप्त हो जाएगा .rbscriptऔर ब्राउज़र तदनुसार कार्य करेगा।
कर्क स्ट्रोबेक

45

यह एक क्रॉकफोर्ड की सिफारिश है। मुझे पता है कि मैंने इसे कहीं और प्रतिध्वनित किया है (शायद ppk?)। HTML5 स्पेक को इसकी आवश्यकता नहीं है।

अजीब तरह से, यह कुछ प्रकार का एक प्रकार का पौधा बन गया है जिसका उपयोग <script>ब्लॉक को चिह्नित करने के लिए "प्रकार" विशेषता का उपयोग करना है जिसे आप मूल्यांकन नहीं करना चाहते हैं:

<script type='text/html-template'>
  <div> this is a template </div>
</script>

एक अजीब गैर-जावास्क्रिप्ट प्रकार देकर, आपको अन्य जावास्क्रिप्ट कोड द्वारा उपयोग के लिए पृष्ठ में कच्चे पाठ को सामान करने का एक तरीका मिलता है (जो कि संभवतः स्क्रिप्ट ब्लॉक में मूल्यांकन किया जा सकता है)।


मैं पूरी तरह से समझ नहीं सकता। कृपया समझाएं, आखिर type="text/html"इसका क्या मतलब है और text/javascriptइसका क्या मतलब है .. धन्यवाद
टी.टोडुआ

4
@tazotodua यह वास्तव में बहुत महत्वपूर्ण नहीं है कि "टेक्स्ट / html" का अर्थ क्या है; महत्वपूर्ण बात यह है कि यह है नहीं "text / javascript", ब्राउज़र पूरी तरह से की सामग्री पर ध्यान नहीं देगा <script>ब्लॉक। हालाँकि, डोम का हिस्सा बन <script> जाएगा , इसलिए अन्य जावास्क्रिप्ट कोड उन्हें ढूंढ सकते हैं और उनकी सामग्री निकाल सकते हैं।
पोइंटी

यह एक दिलचस्प हैक है। मुझे यकीन नहीं है कि मैं इसके लिए क्या उपयोग करूंगा।
brennanyoung

2
w3schools : In HTML5, the type attribute is no longer required for JavaScript. The default value is "application/javascript".
अमीन सोहेली

19

HTML5 को इसकी आवश्यकता नहीं है type="text/javascript"(यह डिफ़ॉल्ट है)।

CDATA यदि XHTML पृष्ठों में कोई HTML अक्षर (जैसे '<' और '>') हैं, तो केवल उन्हीं के लिए neeed है।

<!-- केवल OLD ब्राउज़र के लिए आवश्यक होना चाहिए।


3

खैर, मुझे यह कहने के लिए लुभाया जाता है कि कोई text/javascriptभी किसी और का उपयोग नहीं कर रहा है , और यहां तक ​​कि खनन उपकरण भी शायद इसे हटा देंगे ... दरअसल, फेसबुक एसडीके प्रलेखन बस निर्दिष्ट करता है <script>

हालाँकि, Google SDK प्रलेखन अभी भी है text/javascript

अमेज़न एसडीके प्रलेखन अभी भी है text/javascript

लिंक्डइन एपीआई प्रलेखन अभी भी है text/javascript

इंस्टाग्राम अभी भी उपयोग कर रहा है text/javascript


3

प्रकार विशेषता एक स्क्रिप्ट तत्व के रूप में एम्बेडेड या तत्व के src विशेषता के माध्यम से संदर्भित कोड की पटकथा भाषा को पहचानती है। यह MIME प्रकार के रूप में निर्दिष्ट है; समर्थित MIME प्रकारों के उदाहरणों में टेक्स्ट / जावास्क्रिप्ट, टेक्स्ट / इस्मैस्क्रिप्ट, एप्लिकेशन / जावास्क्रिप्ट और एप्लिकेशन / इकोस्क्रिप्ट शामिल हैं।

HTML 4.01 स्पेसिफिकेशन के अनुसार

प्रकार विशेषता तत्व की सामग्री की स्क्रिप्टिंग भाषा निर्दिष्ट करता है और डिफ़ॉल्ट स्क्रिप्टिंग भाषा ओवरराइड करता है। स्क्रिप्टिंग भाषा एक सामग्री प्रकार (जैसे, "पाठ / जावास्क्रिप्ट") के रूप में निर्दिष्ट है। लेखकों को इस विशेषता के लिए एक मूल्य प्रदान करना चाहिए। इस विशेषता के लिए कोई डिफ़ॉल्ट मान नहीं है।

लेकिन एचटीएमएल 5 text/javascript डिफ़ॉल्ट प्रकार है, जिससे आप चूक सकते हैं

प्रकार विशेषता स्क्रिप्ट या डाटा का स्वरूप की भाषा देता है। यदि विशेषता मौजूद है, तो इसका मान एक मान्य MIME प्रकार होना चाहिए। चारसेट पैरामीटर निर्दिष्ट नहीं किया जाना चाहिए। डिफ़ॉल्ट, जिसका उपयोग यदि विशेषता अनुपस्थित है, "पाठ / जावास्क्रिप्ट" है।


1
दूसरे शब्दों में, इसे छोड़ने से पुराने ब्राउज़रों में त्रुटियां हो सकती हैं जो एचटीएमएल 5
सर्ज

2

आप इस लेख के बारे में यहाँ निर्भरता के साथ सोच रहे होंगे कि लिपियाँ HTML5 में पाठ / जावास्क्रिप्ट के लिए स्वतः ही डिफ़ॉल्ट हो जाती हैं, जबकि गैर- HTML5 ब्राउज़र अभी भी उम्मीद करते हैं कि आप विशेष रूप से विशिष्ट-प्रकार का परिभाषित करते हैं, भले ही वे लगभग हमेशा पाठ / जावास्क्रिप्ट का अनुमान लगाते हों, वैसे भी ।


1

यह scriptहेडर के आधार पर ब्लॉक को सही ढंग से व्याख्या करने के लिए ब्राउज़र पर निर्भर है, मुझे विश्वास है, और typeविशेषता नहीं । तो आपके प्रश्न का उत्तर देने के लिए, नहीं, यह आधुनिक ब्राउज़रों के लिए आवश्यक नहीं है (मैं IE7 +, एफएफ, वेबकिट बात कर रहा हूं)। यदि आप इससे पुराने ब्राउज़र का समर्थन कर रहे हैं ... मुझे आपके लिए खेद है =)


2
चीन को 385+ मिलियन उपयोगकर्ताओं के साथ मत भूलना, जिनमें से कई अभी भी IE6 का उपयोग करते हैं। netmarketshare.com/-
चेनवर्क

3
चीन की सख्त इंटरनेट नीति को जानते हुए, संभावना है कि आपकी साइट उन तक कभी नहीं पहुंच सकती है = पी
नरकंन

सवाल एक इनलाइन स्क्रिप्ट के बारे में है, इसलिए मुख्य पृष्ठ (जो कुछ HTML सामग्री प्रकार होगा) के अलावा कोई हेडर नहीं है। वैसे भी, क्या आपके पास ऐसा स्रोत है जो यह संकेत देता है कि ब्राउज़र हेडर को ध्यान में रखते हैं (जैसे कि अगर आपके पास सादा है <स्क्रिप्ट src = "कुछ"> </ script> और एक VBScript हैडर है, तो कोई भी ब्राउज़र है जो इसे VBScript के रूप में व्याख्या करेगा) ?
मैथ्यू फ्लैशेन

1

आप एक स्क्रिप्ट टैग डाल रहे हैं तो एसवीजी अंदर आप चाहिए प्रकार विशेषता निर्दिष्ट करें। और यह "text/ecmascript"बजाय होना चाहिए "text/javascript"

यदि आपकी स्क्रिप्ट इनलाइन नहीं है (लिंक नहीं है) तो आपको सीडीएटीए घोषणा में भी स्क्रिप्ट बॉडी को लपेटना होगा। एसवीजी (और अन्य एक्सएमएल वेरिएंट) के लिए इनलाइन स्क्रिप्ट बॉयलरप्लेट इस प्रकार है

<script type="text/ecmascript">
<![CDATA[
// your javascript code goes here
]]>
</script>

ये 'जंगली' में विशेष मामले हो सकते हैं, लेकिन वे वास्तविक रूप से पर्याप्त हैं, और एसवीजी का उपयोग बढ़ रहा है, इसलिए किसी और के लिए यह सुझाव देना गलत है कि प्रकार की विशेषता और सीडीएटीए आधुनिक ब्राउज़रों में पूरी तरह से अप्रचलित हैं। उपयोग के मामले संकीर्ण हैं, हां, लेकिन अनसुना नहीं।

"पर्यावरण को इसके विपरीत में बदलें और बुद्धि का हर टुकड़ा मूर्खतापूर्ण हो सकता है।" - एशबी


1
अच्छा निर्णय। बस कुछ जटिल एसवीजी पर काम कर रहा है और यह वास्तव में मामला है!
डेव एवरिट

1

👉🏻 एचटीएमएल 5 विनिर्देश आग्रह लेखकों विशेषता छोड़ के बजाय एक निरर्थक MIME प्रकार प्रदान करते हैं। MDN

माइम सूँघने स्टैंडर्ड जावास्क्रिप्ट किसी भी MIME प्रकार (का उपयोग कर परोसा जा देता है मल्टीपर्पस इंटरनेट मेल एक्सटेंशन्स ) है जो निम्न से मेल खाता है:

<script type="application/javascript"></script>
<script type="application/ecmascript"></script>

<script type="text/javascript"></script>
<script type="text/ecmascript"></script>

0

वैसे मैं पाठ / जावास्क्रिप्ट के बिना अधिक उदाहरण देख रहा हूं लेकिन किसी कारण से मेरी स्क्रिप्ट एफएफ में काम नहीं करती है जब मैं ऐसा करता हूं। मैं पाठ / जावास्क्रिप्ट घोषणा को रखने की सिफारिश करूंगा। CDATA टैग आपकी वेबसाइट में जावास्क्रिप्ट को सादे पाठ के रूप में दिखाए जाने से रोकता है यदि आपके ब्राउज़र में जावास्क्रिप्ट बंद हो गया है। व्यक्तिगत रूप से मैं उन टैगों का उपयोग नहीं करता, अब ऐसा नहीं लगता कि उपयोगकर्ताओं के बिना वहाँ आवंटन है और यदि वे वहाँ हैं तो वे कुछ दिमाग बढ़ाना चाहते हैं: P


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

मैं सबसे हाल ही में स्थिर एफएफ रिलीज का उपयोग कर रहा हूं और ऐसा लगता है कि पाठ / जावास्क्रिप्ट की घोषणा के बिना पार्स करने में परेशानी होती है, मैं jQuery btw का उपयोग करता हूं लेकिन इससे कोई फर्क नहीं पड़ना चाहिए।
माइकल

वैसे मैं अपना पूरा वेब एप्लिकेशन स्क्रिप्ट के टैग के साथ चलाता हूं जो केवल सादे हैं <script>, कोई "भाषा" और कोई "प्रकार" नहीं है, और वे सभी ब्राउज़रों में ठीक काम करते हैं। (खैर, सभी वाजिब: एफएफ, क्रोम, सफारी, आईई, ओपेरा।)
पॉइन्टी

1
@pointy लगता है जैसे फादरस्टॉर्म ने सिर्फ एक उत्तर पोस्ट किया कि ऐसा क्यों हो रहा है। इसलिए आपकी टिप्पणी गलत प्रतीत होती है।
माइकल

@ मिचेल यह मामला हो सकता है कि अगर आपने एक्सएचटीएमएल / स्ट्रिक के साथ जाने की गलती की है तो आपको समस्या हो सकती है, लेकिन फिर भी मुझे संदेह है। जावास्क्रिप्ट दुनिया के प्रकाशकों के बीच सामान्य समझौता है कि "प्रकार" विशेषता अनावश्यक है, और वास्तव में चूंकि एक बुरा "प्रकार" एक स्क्रिप्ट को तोड़ देगा, यह सिर्फ कीड़े का एक स्रोत है।
नुकीले

0

type="text/javascript" : HTML 4 और XHTML में आवश्यक, लेकिन HTML5 में वैकल्पिक।

CDATA : XHTML में आवश्यक।

<!--: बहुत पुराने ब्राउज़रों से जावास्क्रिप्ट को छिपाने के लिए उपयोग किया जाता है। जैसे: नेटस्केप 1 और इंटरनेट एक्सप्लोरर 2, जिनमें से कोई भी किसी का उपयोग नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.