javascript - एक स्क्रिप्ट टैग के भीतर एक सीडीएटीए अनुभाग कब आवश्यक है?




html xhtml (10)

एचटीएमएल

एक HTML पार्सर </script> के हिस्से के रूप में <script> और </script> बीच सबकुछ का इलाज करेगा। कुछ कार्यान्वयनों को सही समापन टैग की भी आवश्यकता नहीं होती है; वे " </ " पर स्क्रिप्ट व्याख्या को रोकते हैं, जो specs अनुसार सही है

एचटीएमएल 5 में अपडेट करें , और मौजूदा ब्राउज़रों के साथ, अब यह मामला नहीं है।

तो, एचटीएमएल में, यह संभव नहीं है:

<script>
var x = '</script>';
alert(x)
</script>

एक CDATA अनुभाग का कोई प्रभाव नहीं पड़ता है । यही कारण है कि आपको लिखने की जरूरत है

var x = '<' + '/script>'; // or
var x = '<\/script>';

या इसी के समान।

यह text/html रूप में कार्यरत एक्सएचटीएमएल फाइलों पर भी लागू होता है। (चूंकि आईई एक्सएमएल सामग्री प्रकारों का समर्थन नहीं करता है, यह ज्यादातर सच है।)

एक्सएमएल

एक्सएमएल में, विभिन्न नियम लागू होते हैं। ध्यान दें कि (गैर आईई) ब्राउज़र केवल एक्सएमएल पार्सर का उपयोग करते हैं यदि XHMTL दस्तावेज़ को XML सामग्री प्रकार के साथ परोसा जाता है।

एक्सएमएल पार्सर के लिए, किसी अन्य टैग की तुलना में एक script टैग बेहतर नहीं है। विशेष रूप से, एक स्क्रिप्ट नोड में " < " द्वारा ट्रिगर किए गए गैर-पाठ बाल नोड्स हो सकते हैं; और एक " & " चिह्न एक चरित्र इकाई को दर्शाता है।

तो, एक्सएचटीएमएल में, यह संभव नहीं है:

<script>
if (a<b && c<d) {
    alert('Hooray');
}
</script>

इस के आसपास काम करने के लिए, आप पूरी स्क्रिप्ट को CDATA अनुभाग में लपेट सकते हैं। यह पार्सर को बताता है: 'इस खंड में, " < " और " & " को नियंत्रण वर्णों के रूप में न मानें ।' जावास्क्रिप्ट इंजन को " <![CDATA[ " और " ]]> " अंकों की व्याख्या करने से रोकने के लिए, आप उन्हें टिप्पणियों में लपेट सकते हैं।

यदि आपकी स्क्रिप्ट में कोई " < " या " & " नहीं है, तो आपको किसी भी तरह से एक CDATA अनुभाग की आवश्यकता नहीं है।

क्या सीडीएटीए टैग स्क्रिप्ट टैग में कभी भी जरूरी हैं और यदि ऐसा है तो?

दूसरे शब्दों में, यह कब और कहाँ है:

<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>

इसके लिए बेहतर:

<script type="text/javascript">
...code...
</script>

HTML4 में सीडीएटीए का उपयोग करें, लेकिन आपको एक्सएचटीएमएल में सीडीएटीए का उपयोग करना चाहिए और एक्सएमएल में सीडीएटीए का उपयोग करना चाहिए यदि आपके पास <और> जैसे अनचाहे प्रतीकों हैं।


इस तरह पुराने ब्राउज़र जावास्क्रिप्ट कोड का विश्लेषण नहीं करते हैं और पृष्ठ तोड़ नहीं जाता है।

पिछड़ा संगतता। निसंदेह, यह प्यारी है।


एक्सएचटीएमएल सत्यापन के दौरान एक्सएमएल त्रुटियों से बचने के लिए।


जब आप सख्त एक्सएचटीएमएल अनुपालन के लिए जा रहे हैं, तो आपको सीडीएटीए की तुलना में बहुत कम और अम्परेंड को अमान्य वर्णों के रूप में चिह्नित नहीं किया जाना चाहिए।


जब ब्राउज़र एक्सएमएल के रूप में मार्कअप का इलाज करते हैं:

<script>
<![CDATA[
    ...code...
]]>
</script>

जब ब्राउज़र HTML के रूप में मार्कअप का इलाज करते हैं:

<script>
    ...code...
</script>

जब ब्राउज़र HTML के रूप में मार्कअप का इलाज करते हैं और आप अपने एक्सएचटीएमएल 1.0 मार्कअप (उदाहरण के लिए) को सत्यापित करने के लिए चाहते हैं।

<script>
//<![CDATA[
    ...code...
//]]>
</script>

यह एक एक्स (एचटी) एमएल चीज है। जब आप जावास्क्रिप्ट के भीतर < और > जैसे प्रतीकों का उपयोग करते हैं, उदाहरण के लिए दो पूर्णांक की तुलना करने के लिए, इसे एक्सएमएल की तरह पार्स किया जाना चाहिए, इस प्रकार वे टैग की शुरुआत या अंत के रूप में चिह्नित होंगे।

सीडीएटीए का मतलब है कि निम्नलिखित पंक्तियां (सभी तक ]]> एक्सएमएल नहीं है और इस प्रकार इस तरह से पार्स नहीं किया जाना चाहिए।


सीडीएटीए इंगित करता है कि भीतर की सामग्री एक्सएमएल नहीं है।


सीडीएटीए ब्राउज़र को पाठ को प्रदर्शित करने के लिए कहता है और इसे HTML के रूप में प्रस्तुत नहीं करता है।






cdata