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




html xhtml cdata (13)

किसी भी XML बोली में सीडीएटीए आवश्यक है, क्योंकि जावास्क्रिप्ट के रूप में मूल्यांकन किए जाने से पहले एक्सएमएल नोड के भीतर पाठ को बाल तत्व के रूप में माना जाता है। यही कारण है कि जेएसलिंट < regexes में चरित्र के बारे में शिकायत करता है।

संदर्भ

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

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

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

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

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

यह सुनिश्चित करने के लिए कि बाहरी रूप से संदर्भित होने के बजाय, आपके पृष्ठ में जावास्क्रिप्ट एम्बेडेड होने पर एक्सएचटीएमएल सत्यापन सही तरीके से काम करता है।

एक्सएचटीएमएल की आवश्यकता है कि आपका पृष्ठ कड़ाई से एक्सएमएल मार्कअप आवश्यकताओं के अनुरूप हो। चूंकि जावास्क्रिप्ट में विशेष अर्थ वाले वर्ण हो सकते हैं, इसलिए आपको यह सुनिश्चित करने के लिए सीडीएटीए में लपेटना होगा कि सत्यापन इसे विकृत के रूप में फ़्लैग नहीं करता है।

वेब पर HTML पृष्ठों के साथ आप केवल आवश्यक जावास्क्रिप्ट और टैग शामिल कर सकते हैं। जब आप अपने वेब पेज पर एचटीएमएल को मान्य करते हैं तो जावास्क्रिप्ट सामग्री को सीडीएटीए (चरित्र डेटा) माना जाता है जिसे इसलिए वैधकर्ता द्वारा अनदेखा किया जाता है। यदि आप अपने वेब पेज को स्थापित करने के लिए हालिया एक्सएचटीएमएल मानकों का पालन करते हैं तो यह भी सच नहीं है। एक्सएचटीएमएल के साथ स्क्रिप्ट टैग के बीच कोड को पीसीडीएटीए (पार्सेड कैरेक्टर डेटा) माना जाता है जिसे इसलिए वैधकर्ता द्वारा संसाधित किया जाता है।

इसके कारण, आप अपने पृष्ठ पर स्क्रिप्ट टैग के बीच जावास्क्रिप्ट को अपने वेब पेज को तोड़ने के बिना ही शामिल नहीं कर सकते (कम से कम जहां तक ​​वैधकर्ता चिंतित है)।

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


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

विकिपीडिया पर एक स्पष्टीकरण यहां दिया गया है


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

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

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

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

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

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

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

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


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


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



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


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


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


यदि आपको अपने दस्तावेज़ को एक्सएमएल के रूप में पार्स करने की आवश्यकता है तो एक सीडीएटीए अनुभाग आवश्यक है (उदाहरण के लिए जब एक्सएचटीएमएल पेज एक्सएमएल के रूप में व्याख्या किया जाता है) और आप i&lt;10 और a &amp;&amp; b बजाय शाब्दिक i<10 और a && b लिखने में सक्षम होना चाहते हैं a &amp;&amp; b a &amp;&amp; b , क्योंकि एक्सएचटीएमएल जावास्क्रिप्ट कोड को पार्स किए गए चरित्र डेटा के रूप में डिफ़ॉल्ट रूप से वर्ण डेटा के विपरीत पार्स करेगा। यह बाहरी स्रोत फ़ाइलों में संग्रहीत स्क्रिप्ट के साथ कोई समस्या नहीं है, लेकिन एक्सएचटीएमएल में किसी भी इनलाइन जावास्क्रिप्ट के लिए आप शायद सीडीएटीए अनुभाग का उपयोग करना चाहेंगे।

ध्यान दें कि कई एक्सएचटीएमएल पृष्ठों का कभी एक्सएमएल के रूप में विश्लेषण नहीं किया गया था, इस मामले में यह कोई मुद्दा नहीं होगा।

विषय पर एक अच्छा लेखन के लिए, http://javascript.about.com/library/blxhtml.htm देखें


इसके लायक होने के लिए, इस तरह मैं एक सामान्य तत्व के लिए इस तरह के व्यवहार को प्राप्त करने में कामयाब रहा जो स्क्रॉलिंग के साथ एक डीआईवी के अंदर हो सकता है। हमारे मामले में हम पूरे शरीर को स्क्रॉल नहीं करते हैं, लेकिन अतिप्रवाह वाले विशेष तत्व: ऑटो; एक बड़े लेआउट के भीतर।

यह लक्ष्य तत्व की ऊंचाई का नकली इनपुट बनाता है, और उसके बाद इसे ध्यान केंद्रित करता है, और ब्राउजर बाकी के बारे में परवाह करेगा चाहे आप स्क्रॉल करने योग्य पदानुक्रम के भीतर कितना गहरा हो। एक जादू की तरह काम करता है।

var $scrollTo = $('#someId'),
inputElem = $('<input type="text"></input>');

$scrollTo.prepend(inputElem);
inputElem.css({
  position: 'absolute',
  width: '1px',
  height: $scrollTo.height()
});
inputElem.focus();
inputElem.remove();




javascript html xhtml cdata