HTML टिप्पणी टैग का उपयोग <! -> - अभी भी जावास्क्रिप्ट कोड के आसपास प्रासंगिक है?


80

क्या जावास्क्रिप्ट कोड के आसपास HTML टिप्पणी टैग का उपयोग करना अभी भी प्रासंगिक है?

मेरा मतलब

<html>
    <body>
        <script type="text/javascript">
            //<!--
            document.write("Hello World!");
            //-->
        </script>
    </body>
</html>

ब्राउज़रों के बगल में उपयोग किए जाने वाले जावास्क्रिप्ट पर विचार करें। बहुत पुराने ब्राउज़रों को भी बाहर रखें।
रजकव ०

जवाबों:


108

HTML टिप्पणियाँ, यानी। <!-- -->, अब जरूरत नहीं है। वे उन ब्राउज़रों को अनुमति देने के लिए थे, जो <script>टैग को नीचा दिखाने के लिए समझ में नहीं आते थे । ये ब्राउज़र, उदाहरण के लिए। नेटस्केप 1.x अब जंगली में नहीं पाए जाते हैं। तो अब आपके स्क्रिप्ट टैग में HTML कमेंट्स डालने का कोई मतलब नहीं है।

यदि आप चाहते हैं कि आपका HTML XHTML या XML के रूप में मान्य हो, तो आप शायद CDATA टैग से टिप्पणी करना चाहते हैं।


<script type="text/javascript">
//<![CDATA[
document.write("Hello World!");
//]]>
</script>

इस का कारण यह है तो अपने <, >, &, "और 'है कि अपने जावास्क्रिप्ट कोड का हिस्सा हैं के रूप में एन्कोड करने की जरूरत नहीं होगी &lt;, &gt;, &amp;, &quot;और &apos;क्रमशः।


3
जब आप एक स्ट्रिंग के भाग के रूप में ']]> को शामिल करना चाहते हैं तो आप क्या करते हैं?
dreamlax

6
@dreamlax: आपको इसे टुकड़ों में तोड़ना होगा। लोगों को वही समस्या है </script>जिसके साथ आमतौर पर </scrऔर टूट जाता है ipt>
असफ

6
वास्तव में आज भी js कोड के आसपास html टिप्पणियों का उपयोग करने में एक बिंदु हो सकता है। Googlebot js कोड में पाए जाने वाले किसी भी स्ट्रिंग को क्रॉल करेगा जो "एक url जैसा दिखता है" (I-not-know-what मापदंड के अनुसार) जैसे कि यह एक लिंक था। मुझे पता है कि यह पूरी तरह से पागलपन है लेकिन यह करता है। कई मामलों में आपके पास ऐसे तार हो सकते हैं जो url की तरह दिखते हैं, लेकिन मान्य urls नहीं हैं, इसलिए आप नहीं चाहते कि Google का क्रॉलर आपके सर्वर को बकवास अनुरोधों से नाराज करे। कुछ लोग जो यह जानना चाहते हैं कि वे क्या कहते हैं, googlebot यह सुनिश्चित करता है कि अगर js कोड html टिप्पणियों में संलग्न है, तो वे लुक-जैसे- url js को क्रॉल नहीं करेंगे। goo.gl/ZRW1Y havnt tho
matteo


1
यदि लक्ष्य HTML / XML सत्यापनकर्ताओं को आश्वस्त करना है (आजकल कई लोग <script>सामान को सही ढंग से समझते हैं ), तो मुझे CDATAपारंपरिक टिप्पणी के ऊपर ब्लॉक का एक महत्वपूर्ण लाभ नहीं दिखता है । एकमात्र अंतर यह है कि <script>आधिकारिक तौर पर सामग्री है या नहीं - और खोज इंजन के बारे में, हम चाहते हैं कि इसमें कोई सामग्री न हो ...
BurninLeo

23

वास्तव में नहीं, जब तक कि आप 20-वर्षीय ब्राउज़र को लक्षित नहीं कर रहे हैं।


6
से नहीं है, इंटरनेट एक्सप्लोरर 2. नेटस्केप था Javascript समर्थन 2.0
MarkR

1
@ केंक्सक्स: इससे भी बदतर - नेटस्केप नेविगेटर 2 अगर मुझे सही याद है।
चक

14

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


8
कभी-कभी .jsHTML में फाइलों के बजाय आपकी सभी जावास्क्रिप्ट को अपडेट करना मुश्किल हो जाता है क्योंकि .jsफाइलें कैश की जा सकती हैं।
असफ

11
मैं अपनी जावास्क्रिप्ट फ़ाइलों को एक फ़ोल्डर से लिंक करता हूं, जिसमें इसका नाम मेरे वेब एप्लिकेशन का वर्तमान संस्करण है।
हर्ज़ेमिस्टर

3
कई वेबसाइटों और चौखटे की एक और सामान्य रणनीति, जैसे कि वर्डप्रेस, js फ़ाइल URI में एक क्वेरी स्ट्रिंग जोड़ना है, ताकि क्वेरी स्ट्रिंग में परिवर्तन होने पर फ़ाइल को फिर से लोड करने के लिए मजबूर किया जा सके। उदा:<script type="text/javascript" src="http://example.com/path/to/file.js?v1.0"></script>
बी।

5

जिस तरह से आप इसे कर रहे हैं, नहीं।

<! - को जावास्क्रिप्ट में // के समान माना जाता है, इसलिए आपके कोड को इस तरह दिखना चाहिए:

<script type="text/javascript">
<!--
document.write("Hello World!");
//-->
</script>

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

यदि आप जिज्ञासु हैं, तो यहां इस बारे में अधिक जानकारी यहां दी गई है: http://www.javascripter.net/faq/comments.htm

हालांकि अंत में भी सुपर अस्पष्ट ब्राउज़र जो डिफ़ॉल्ट रूप से जावास्क्रिप्ट का समर्थन नहीं करते (जैसे HTMLLayout ब्राउज़ या नेटसर्फ) यह जानते हैं कि स्क्रिप्ट टैग के बीच पाठ को प्रस्तुत नहीं करना सबसे अच्छा है, इसलिए नहीं, यह किसी भी तरह से प्रासंगिक नहीं है। हालाँकि सभी ब्राउज़रों को आप संभवतः <-! सिंटैक्स समझने के बारे में ध्यान रख सकते हैं, इसलिए आपके पास पहले से मौजूद चीज़ों को हटाने की कोई चिंता करने की कोई वास्तविक आवश्यकता नहीं है, क्योंकि यह वैध js है, बस इसे अगली बार नहीं जोड़ना याद रखें।


0

आधुनिक ब्राउज़रों में भी, यह उपयोगी हो सकता है। मैं वास्तव में आज इस समस्या में भाग गया, ठीक है क्योंकि मैं अपने html में जावास्क्रिप्ट को एम्बेडेड होने से बचना चाहता था।

मेरे पास एक html पृष्ठ है जिसे ऊपर दिया गया है http://host/variable_app_name/pagename, जहाँ variable_app_nameकई मान हो सकते हैं (y'know, परिवर्तनीय)। यदि वह स्थिर फ़ाइलों तक पहुँच प्राप्त करना चाहता है http://host/static/variable_app_name/filename, तो उसे url का उपयोग करना पड़ता है , इसलिए मैं पहली बार ब्राउज़र के स्थान को देखे बिना स्थैतिक फ़ाइल स्थान को निर्दिष्ट नहीं कर सकता variable_app_name

मुख्य जावास्क्रिप्ट फ़ाइल से लिंक करने के लिए मैं निम्नलिखित कार्य करता हूँ:

<script type="text/javascript" >
   var variable_app_name = window.location.pathname.split('/')[1];
   document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n');
</script>

उपरोक्त कोड क्रोम के नवीनतम संस्करण में भी फट जाएगा, क्योंकि स्क्रिप्ट टैग को जावास्क्रिप्ट स्ट्रिंग के बीच में समाप्त कर दिया जाएगा और शेष स्ट्रिंग को HTML के रूप में व्याख्या किया जाएगा, जैसे:

<script type="text/javascript" >
   var variable_app_name = window.location.pathname.split('/')[1];
   document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js">
</script>
\n');
</script>

इसे ठीक करने के कई तरीके हैं, लेकिन मुझे एक html टिप्पणी का उपयोग करना पसंद है।

Html टिप्पणी के साथ:

<script type="text/javascript" >
<!--
   var variable_app_name = window.location.pathname.split('/')[1];
   document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n');
-->
</script>

जावास्क्रिप्ट स्ट्रिंग तोड़कर:

<script type="text/javascript" >
   var variable_app_name = window.location.pathname.split('/')[1];
   document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></scr'+'ipt>\n');
</script>

डॉक्यूमेंट का उपयोग करने के बजाय स्क्रिप्ट टैग बनाएं और जोड़ें।

<script type="text/javascript" >
   var variable_app_name = window.location.pathname.split('/')[1];
   var script = document.createElement('script');
   script.type = 'text/javascript';
   script.src = '/static/'+variable_app_name+'/pagename.js';
   document.head.appendChild(script);
</script>

मुझे html टिप्पणी का उपयोग करना पसंद है क्योंकि यह एक संक्षिप्त परिवर्तन है और इसे प्रत्येक लिंक की गई फ़ाइल के बारे में दोहराने या सोचने की आवश्यकता नहीं होगी।

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