क्या स्क्रिप्ट के अंदर HTML टिप्पणियाँ एक सर्वोत्तम अभ्यास हैं? [बन्द है]


97

निम्नलिखित अभ्यास इनलाइन जावास्क्रिप्ट में काफी सामान्य है जिसे मुझे काम करना है:

<script type="text/javascript">
   <!--
       // Code goes here
   //-->
</script>

मुझे पता है कि यह बिंदु उन ब्राउज़रों को रोकने के लिए है जो जावास्क्रिप्ट को स्रोत के प्रतिपादन से असंगत हैं, लेकिन क्या यह आज भी एक सर्वोत्तम अभ्यास है? आज उपयोग किए जाने वाले अधिकांश ब्राउज़र जावास्क्रिप्ट की व्याख्या कर सकते हैं; यहां तक ​​कि आधुनिक मोबाइल उपकरणों में आमतौर पर परेशानी नहीं होती है।

'क्यों नहीं?' प्रश्न: मुझे हाल ही में एक मुद्दे पर डिबगिंग में कई घंटे बिताने पड़े, जहां किसी ने '/>' को '->' के सामने छोड़ दिया था, जो कुछ पृष्ठों में गहरे लिपटे हुए स्क्रिप्ट टैग के अंत में था, और यह रहस्यमय जावास्क्रिप्ट पैदा कर रहा था त्रुटियों।

आप क्या करते हैं? क्या यह अभी भी एक 'सर्वोत्तम अभ्यास' माना जाता है?


जवाबों:


118

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

मैट क्रूस अपने जावास्क्रिप्ट टूलबॉक्स साइट पर थोड़ा अधिक विस्तृत विवरण देता है कि विशेष रूप से स्क्रिप्ट ब्लॉक के भीतर HTML टिप्पणियों का उपयोग क्यों नहीं किया जाए।

उस पृष्ठ से उद्धृत:


स्क्रिप्ट ब्लॉक में HTML टिप्पणियों का उपयोग न करें

जावास्क्रिप्ट (1995) के प्राचीन दिनों में, नेटस्केप 1.0 जैसे कुछ ब्राउज़रों को स्क्रिप्ट टैग का कोई समर्थन या ज्ञान नहीं था। इसलिए जब जावास्क्रिप्ट पहली बार जारी किया गया था, तो पुराने ब्राउज़रों से कोड को छिपाने के लिए एक तकनीक की आवश्यकता थी, ताकि वे इसे पृष्ठ में पाठ के रूप में प्रदर्शित न करें। 'हैक' कोड को छिपाने के लिए स्क्रिप्ट ब्लॉक के भीतर HTML टिप्पणियों का उपयोग करना था।

स्क्रिप्ट में HTML कमेंट्स का उपयोग करना बुरा है

// DON'T do this! Code is just representative on how things were done
<script language="javascript">
<!--
   // code here
//-->
</script>

आज आम उपयोग में कोई भी ब्राउज़र <स्क्रिप्ट> टैग से अनभिज्ञ नहीं है, इसलिए जावास्क्रिप्ट स्रोत को छिपाना अब आवश्यक नहीं है। वास्तव में, इसे निम्नलिखित कारणों से हानिकारक माना जा सकता है:

  • XHTML दस्तावेज़ों के भीतर, स्रोत वास्तव में सभी ब्राउज़रों से छिपा होगा और बेकार हो जाएगा
  • - HTML टिप्पणियों के भीतर अनुमति नहीं है, इसलिए स्क्रिप्ट में कोई भी कमी संचालन अमान्य हैं

1
+1। मुझे पता था कि कोई है जो इस विषय के बारे में मेरे comp.lang.javascript दिनों से बहुत सारी जानकारी रखता था, मैं मैट का हवाला देते हुए आपके जवाब दिखाई देने पर समाचार समूह अभिलेखागार को भ्रमित कर रहा था।
ग्रांट वैगनर

1
XHTML में, आप HTML टिप्पणी के बजाय CDATA का उपयोग कर सकते हैं: <script ...> // <! [CDATA [... //]]> </ script>
कंक्रीट गनेट

मुझे यह जोड़ना चाहिए कि यह 'हैक' इंटरनेट एक्सप्लोरर 9 में एक त्रुटि पैदा करता है (एक ग्राहक ने उस पृष्ठ के बारे में शिकायत की जो ठीक से काम नहीं कर रहा था और यही कारण था)
lordscales91

24

मैंने करना बंद कर दिया है। कुछ बिंदु पर आपको बस अपने NCSA मोज़ेक को जाने देना है।


7
दूसरे शब्दों में, कोई कारण नहीं बताया गया है कि क्यों ओपी को ऐसा करना बंद करना चाहिए। आप सुझाव दे रहे हैं कि उसे ऐसा करना बंद कर देना चाहिए क्योंकि आपने किया, जो एक अच्छा पर्याप्त कारण नहीं है कि वह उत्तर आईएमओ हो।
लॉरेंस आइलो

1
@ लॉरेंसएएलो: वाक्यांश "सर्वश्रेष्ठ अभ्यास" के बारे में क्या आप "तथ्यों" के बारे में सोचते हैं और "राय" नहीं?
अराजक

5
इस पूरी पोस्ट में अच्छी तरह से निहित है। इसे बंद किया जाना चाहिए था क्योंकि यह एक चर्चा का प्रश्न है।
लॉरेंस आइलो

1
शायद जब यह छह साल पहले पोस्ट किया गया था, तो यह एक उत्तर के रूप में योग्य था , हालांकि आज साइट के मानकों के अनुसार यह नहीं है।
j08691

1
इस उत्तर पर मेटा SO
CubeJockey

10

W3C सिफारिश के अनुसार यह मुख्य रूप से USER एजेंट्स से स्क्रिप्ट डेटा को छिपाने के लिए उपयोगी था।

W3c पृष्ठ से उद्धृत :

जावास्क्रिप्ट में स्क्रिप्टिंग करना जावास्क्रिप्ट इंजन स्ट्रिंग "<!--"को SCRIPT तत्व के शुरू होने की अनुमति देता है , और पंक्ति के अंत तक आगे के वर्णों की उपेक्षा करता है। वर्तमान लाइन के अंत तक फैली एक टिप्पणी शुरू करने के रूप में जावास्क्रिप्ट "//" की व्याख्या करता है। यह जावास्क्रिप्ट पार्सर से स्ट्रिंग "->" को छिपाने के लिए आवश्यक है।

    <SCRIPT type="text/javascript">
<!--  to hide script contents from old browsers
  function square(i) {
    document.write("The call passed ", i ," to the function.","<BR>")
    return i * i
  }
  document.write("The function returned ",square(5),".")
// end hiding contents from old browsers  -->
</SCRIPT>

2
यदि HTML 4.x का उपयोग किया जा रहा है। यह XHTML के साथ काफी अलग कहानी है।
क्वेंटिन

8

नहीं, यह स्क्रिप्ट तत्व को पहली बार पेश किए जाने पर उपयोग किए जाने वाले वर्कअराउंड से हैंगओवर है। कोई भी ब्राउज़र आज स्क्रिप्ट तत्व को समझने में विफल रहता है (भले ही वह इसे "स्क्रिप्ट के रूप में समझता हो जिसे अनदेखा किया जाना चाहिए क्योंकि स्क्रिप्टिंग बंद या असमर्थित है")।

XHTML में, वे सक्रिय रूप से हानिकारक हैं।

मैंने कुछ लिखा था समय पहले इसके इतिहास के में


3

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


1
अधिकांश ब्राउज़र अभी भी काम करेंगे, हालांकि यह HTML विनिर्देश का उल्लंघन करता है, इसलिए मैं इसकी सलाह नहीं दूंगा।
क्वेंटिन

4
आप कभी नहीं जान पाएंगे कि IE कब वीबी स्क्रिप्ट को डिफ़ॉल्ट प्रकार के रूप में ले जाएगा ..
फ्रांसिस

1

यदि आप मैन्युअल रूप से टाइप कर रहे हैं, तो मेरा सुझाव है कि आप हमेशा बाहरी js फ़ाइलों का उपयोग करें, इससे बहुत मदद मिलेगी।

आपकी चिंता के बारे में: अधिकांश ब्राउज़र आज जावास्क्रिप्ट सुरक्षित हैं। हालाँकि कभी-कभी लोग HTML को सीधे लाने के लिए सरल पार्सर लिख सकते हैं - और मुझे कहना होगा, सुरक्षित उद्धरण वास्तव में उन ग्राहकों के लिए उपयोगी है। इसके अलावा कुछ गैर-जेएस ग्राहकों जैसे पुराने लिंक्स को इससे लाभ मिलेगा।


1

यदि आप स्क्रिप्ट टैग के बीच शाब्दिक पाठ को शामिल नहीं करते हैं, अर्थात, यदि आप स्क्रिप्ट को src फ़ाइलों से लोड करते हैं, तो आप टिप्पणियों के बारे में भूल सकते हैं।



0

मैंने वह युग पहले करना बंद कर दिया था। आपको वास्तव में इस दिन और उम्र में इसकी आवश्यकता नहीं है।


@Yvette मैंने अपना उत्तर पोस्ट करने के छह साल बाद उस टिप्पणी को पोस्ट करने के लिए आपकी प्रेरणा क्या है?
जॉन टॉपले

@ यवेट कोई अपराध नहीं लिया गया, मैं केवल उत्सुक था। और निश्चित ही तुम ठीक कह रहे हो; आजकल मैंने इसे एक टिप्पणी के रूप में पोस्ट किया होगा।
जॉन Topley

-1

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

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