2010-07-21 15 views

उत्तर

55

CDATA संरचना वास्तव में HTML के लिए बिल्कुल नहीं है, यह एक्सएमएल के लिए है।

लोग कभी-कभी उन्हें script टैग के अंदर HTML में उपयोग करते हैं क्योंकि इससे कुछ विशेष वर्णों से बचने की आवश्यकता को हटा दिया जाता है। यह किसी भी तरह से एक आवश्यकता नहीं है, हालांकि (या तो HTML 4 या 5 के लिए)।

संपादित करें: यह वह जगह है जहां हम खोलने कि कि क्या आप text/html के रूप में या application/xhtml+xml के रूप में एक्सएचटीएमएल भेज रहे हैं जैसे आप कर रहे हैं :-) करने के लिए "माना" पर 2002 से कीड़े की वास्तव में फफूंदी वर्ष कर सकते हैं

+1

मैं HTML भेज रहा हूं (नहीं एक्सएचटीएमएल) और मुझे वह चाहिए। उत्तर के लिए Thxs :) –

+0

'pre' टैग के अंदर' सीडीएटीए 'का उपयोग कर सकते हैं, इसलिए मुझे अपने सभी कोण ब्रैकेट को ठीक करने की ज़रूरत नहीं है? – gman

5

शायद देखें:! http://wiki.whatwg.org/wiki/HTML_vs._XHTML

< [CDATA [...]] > एक एक फर्जी टिप्पणी है।

HTML में, <script> पहले से ही सुरक्षित है - यह क्यों कभी कभी यह a = "<" + "/script>" के रूप में लिखा जाना चाहिए, ब्राउज़र भ्रमित से बचना है। ध्यान दें कि कोड HTML में एक सीडीएटीए के बाहर मान्य है।

+2

मुझे लगता है कि अंत टैग से बचने का सबसे अच्छा तरीका "<\/script>" है। मैंने पढ़ा है कि कुछ पार्सर्स केवल "" – marcus

+0

@marcus आप सही हैं और '' विभाजन होना आम बात है, और मुझे मुख्यधारा * ब्राउज़र * के बारे में पता नहीं है जहां यह काम नहीं करता है ... –

14

इस मुद्दे को स्पष्ट करने के लिए लगता है। लिपि और स्टाइल टैग को "कच्चे पाठ तत्व" माना जाता है। सीडीएटीए की आवश्यकता नहीं है या उनके लिए अनुमति नहीं है। सीडीएटीए का उपयोग केवल "विदेशी सामग्री" के साथ किया जाता है - यानी मैथएमएल और एसवीजी। ध्यान दें कि स्क्रिप्ट टैग में क्या हो सकता है इसके कुछ प्रतिबंध हैं - मूल रूप से आप वहां var x = '</script>' जैसे कुछ नहीं डाल सकते हैं क्योंकि यह टैग बंद कर देगा और उसके उत्तर में वर्णित पीएसटी की तरह विभाजित होने की आवश्यकता है। http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions

22
एक ही पृष्ठ @pst linked to से

:

Element-specific parsing for script and style tags, एक्सएचटीएमएल-एचटीएमएल अनुकूलता के लिए मार्गदर्शन: "एस्केपिंग साथ निम्नलिखित कोड स्क्रिप्ट सुनिश्चित कर सकते हैं और शैली तत्वों दोनों XHTML और HTML में काम करेंगे, पुराने सहित ब्राउज़रों। "

अधिकतम पश्च संगतता:

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

सरल संस्करण, एक तरह से "बहुत पुराने ब्राउज़र" के साथ असंगत:

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

तो, CDATA एचटीएमएल 5 में इस्तेमाल किया जा सकता है, और यह में अनुशंसा की जाती है एक्सएचटीएमएल-एचटीएमएल संगतता के लिए मार्गदर्शन। यह polyglot HTML/XML/XHTML pages के लिए उपयोगी है, जो विकास के दौरान XML के रूप में बनाए और पार्स किए गए हैं, लेकिन बेहतर क्रॉस-ब्राउज़र संगतता के लिए HTML5 के रूप में कार्यरत हैं। Polyglot pages has their benefits, और मैंने इसे स्वयं उपयोग किया है, क्योंकि एक्सएमएल/एक्सएचटीएमएल 5 को डीबग करना बहुत आसान है। उदाहरण के लिए, Google क्रोम अमान्य एक्सएमएल/एक्सएचटीएमएल 5 (उदाहरण के लिए character escaping) के लिए एक त्रुटि फेंक देगा, जबकि एचटीएमएल 5 के रूप में कार्य किया गया वही पेज "बस काम करेगा" उर्फ ​​"शायद काम" करेगा।

+10

यदि आप कुछ 20 साल पुराने ब्राउज़र का समर्थन करना चाहते हैं, तो एनएससीए मोज़ेक या नेटस्केप 1 का समर्थन करना चाहते हैं, तो एक स्क्रिप्ट टैग के भीतर टिप्पणियों की आवश्यकता होती है ... –

संबंधित मुद्दे