2013-02-08 16 views
5

एचटीएमएल में, टैग और इकाइयों को <script> टैग के भीतर पार्स नहीं किया गया है, और </ तुरंत टैग समाप्त होता है। इस प्रकार,एस्केप</ स्क्रिप्ट टैग सामग्री में

<script><b>fun &amp; things</ 

आपको सटीक सामग्री <b>fun &amp; things के साथ एक स्क्रिप्ट टैग देगा।

आप JSON शामिल कर रहें हैं और आप अपनी स्क्रिप्ट में पात्रों </ शामिल करना चाहते हैं, तो आप क्योंकि उन अक्षरों को प्रदर्शित करने के लिए ही जगह एक स्ट्रिंग में है, और \/ पलायन अनुक्रम है <\/ साथ यह जगह ले सकता है कि एक एकल आगे स्लैश में बदल जाता है।

हालांकि, यदि आप जावास्क्रिप्ट का उपयोग नहीं कर रहे हैं, तो यह चाल काम नहीं करती है। मेरे मामले में विशेष रूप से मैं स्रोत में <script type="math/tex"> डालने का प्रयास कर रहा हूं ताकि MathJax इसे संसाधित कर सके। मूल HTML स्रोत में </ से बचने का कोई तरीका है? (मेरे पास </ की कोई विशेष आवश्यकता नहीं है, लेकिन मैं एक सामान्य उपकरण लिख रहा हूं और किसी भी पाठ का उपयोग करना संभव बनाना चाहता हूं।)

(जावास्क्रिप्ट में स्क्रिप्ट टैग बनाना संभव है और इसके innerText को पॉप्युलेट करना संभव है, लेकिन मैं कच्चे HTML के साथ काम कर रहा हूं इसलिए मैं ऐसा नहीं कर सकता।)

+2

क्या आप '<' का उपयोग नहीं कर सकते? यह मुझे स्पष्ट नहीं है कि आप यहां क्या करने की कोशिश कर रहे हैं। – Oded

+0

तो, मूल रूप से, आप वास्तविक स्क्रिप्ट टैग को एन्कोड किए बिना ' 'टैग के बीच किसी भी HTML को एन्कोड करने का प्रयास कर रहे हैं? – sbeliv01

+2

@ ओडेड: नहीं, स्क्रिप्ट टैग कैसे काम करते हैं, यदि आप '< 'का उपयोग करते हैं तो आपको वास्तव में चार वर्ण' & ',' l', 't','; –

उत्तर

4

एचटीएमएल में, एक्सएचटीएमएल के विपरीत, script तत्व की सामग्री को अंत टैग की घटना के अलावा सादे पाठ के रूप में संसाधित किया जाता है, ताकि </ प्रसंस्करण समाप्त हो , दस्तावेजों के अनुरूप, अंत टैग </script> शुरू करें। इससे बचने के लिए कोई सामान्य तंत्र नहीं है। इस सुविधा को बाधित करने वाली कोई भी विधि तत्व के अंदर उपयोग की जाने वाली "भाषा" पर अनिवार्य रूप से निर्भर है। शब्द "भाषा" यहां उद्धरणों में है, क्योंकि सामग्री केवल कुछ भी हो सकती है, जब तक कि आपका कोड पार्स और प्रक्रिया कर सके।

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

+2

यूनिकोड '\ u003c' जैसे स्क्रिप्ट टैग के अंदर एक सार्वभौमिक समाधान नहीं है? यह रेल और फ्लास्क में JSON के लिए कार्यान्वित किया गया है (मेरे प्रश्न के निचले हिस्से में कार्यान्वयन लिंक: http://stackoverflow.com/q/39193510/518169) – zsero

0

अधिक HTML एन्कोडिंग सहायता कर सकती है? &lt;< के लिए।

यह जानना मुश्किल है कि आप इसके साथ क्या कर रहे हैं।

<script><![CDATA[<b>fun &amp; things</b>]]></script> 
: तुम क्या स्क्रिप्ट टैग के बीच सामग्री हो सकता है (? लगता है कि आप किसी प्रकार की एक टेम्पलेट धारक के रूप में उपयोग करने की कोशिश कर रहा हो सकता है) की तरह के बारे में सुनिश्चित नहीं हैं तो आप/एक CDATA अनुभाग का उपयोग करना चाहिए सकता है

ऐसा करना चाहिए। अधिक विवरण भी एक बेहतर उत्तर देने में मदद कर सकता है :)

+3

ध्यान रखें कि सीडीएटीए एक एक्सएचटीएमएल सुविधा है, और एचटीएमएल में कुछ भी नहीं करता है। –

11

मैं जावास्क्रिप्ट कोड के अंदर </script> से सार्वभौमिक रूप से बचने का एक तरीका ढूंढ रहा हूं।

अनुसंधान के बिट के बाद मुझे लगा कि अगर आप जावा स्क्रिप्ट कोड में </script> से बचने के लिए तो यह सुरक्षित रूप से <script> और </script> टैग के बीच html में एम्बेड किया जा सकता कोशिश कर रहे हैं आप </scr\ipt या </scri\pt साथ </script प्रतिस्थापित करना चाहिए। यह करने के लिए सुरक्षित है, क्योंकि अगर आप इसे <\/script के साथ बदलें आप इस तरह जावा स्क्रिप्ट कोड तोड़ सकता: var q = -1</script/.test("script");

</script> देखने के लिए सावधान रहें बल्कि </script क्योंकि </script asdasdas> अपनी स्क्रिप्ट बस के रूप में अच्छी तरह से </script> करता है के रूप में खत्म हो जाएगा।

क्षमा करें, यह बेन अल्परेट को किसी भी तरह से मदद नहीं करता है। स्वीकार्य उत्तर बिल्कुल सही है कि कोड को तोड़ने के बिना </script> घटना से बचने के तरीके के बारे में जानने के लिए आपको अपने <script></script> के अंदर भाषा में कौन सी संरचनाएं कानूनी हैं, यह जानने की आवश्यकता है।

+0

रिक्त स्थान ' justingordon

+0

@justingordon '

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