दिलचस्प पोस्ट
सी में एक बड़ी फ़ाइल को विखंडित कैसे करें? क्या कांच के साथ ट्री व्यू बनाना संभव है? "Process.stdout.write" और "console.log" के बीच अंतर node.js? क्या जावा में अंतिम कीवर्ड का उपयोग प्रदर्शन में सुधार करता है? सभी ब्राउज़रों के लिए Object.watch ()? दिखा रहा है कि कौन से फ़ाइलें दो संशोधनों के बीच बदल गई हैं पीछे वाले स्थानों के साथ एसक्यूएल जहां क्लोज़ मेलिंग वैल्यू पायथन का प्रयास करें-दूसरा किसी स्थानीय फ़ाइल या यूआरएल से आईओ स्ट्रीम खोलें I जावास्क्रिप्ट का उपयोग करके कस्टम अलर्ट सभी div सामग्री को अक्षम कैसे करें मैं जावा में क्यों नल डाल सकता हूं? उचित संस्कृति के साथ स्ट्रिंग को दोहरे रूपांतरित करने के लिए कैसे करें अजाक्स, बैक बटन और डोम अपडेट कैसे WKWebview कुकीज़ को हटाने के लिए

दस्तावेज़ के साथ इसे लिखते समय <script> टैग को विभाजित क्यों करें? लिखना ()?

कुछ साइटें (या विज्ञापनदाता जो क्लाइंट जावास्क्रिप्ट कोड देते हैं) document.write() और <script> में <script> और / या </script> टैग के बंटवारे की तकनीक को काम करते हैं।

मैंने देखा है कि अमेज़ॅन भी इस तरह से करता है, उदाहरण के लिए:

 <script type='text/javascript'> if (typeof window['jQuery'] == 'undefined') document.write('<scr'+'ipt type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/javascripts/lib/jquery/jquery-1.2.6.pack._V265113567_.js"></sc'+'ript>'); </script> 

Solutions Collecting From Web of "दस्तावेज़ के साथ इसे लिखते समय <script> टैग को विभाजित क्यों करें? लिखना ()?"

</script> को तोड़ना होगा क्योंकि अन्यथा यह समापन <script></script> ब्लॉक को बहुत जल्दी से समाप्त कर देगा वास्तव में इसे < और / बीच विभाजित किया जाना चाहिए, क्योंकि किसी स्क्रिप्ट ब्लॉक को (एसजीएमएल के अनुसार) माना जाता है जिसे किसी भी अंत टैग खुला (ईगोओ) क्रम से समाप्त किया जाता है (यानी </ ) :

यद्यपि STYLE और SCRIPT तत्व उनके डेटा मॉडल के लिए सीडीएटीए का उपयोग करते हैं, इन तत्वों के लिए, सीडीएटीए को उपयोगकर्ता एजेंटों द्वारा अलग तरह से नियंत्रित किया जाना चाहिए। मार्कअप और संस्थाओं को कच्चे पाठ के रूप में माना जाना चाहिए और जैसा कि आवेदन के लिए पास किया गया है। चरित्र अनुक्रम " </ " (अंत-टैग ओपन सीमांकक) की पहली घटना को तत्व की सामग्री के अंत को समाप्त करने के रूप में माना जाता है। मान्य दस्तावेजों में, यह तत्व के लिए अंत टैग होगा।

हालांकि व्यवहार ब्राउज़रों में केवल एक वास्तविक </script> close-tag पर एक सीडीएटीए स्क्रिप्ट ब्लॉक को पार्स करने में ही समाप्त होता है

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

 <script type="text/javascript"> document.write('\x3Cscript type="text/javascript" src="foo.js">\x3C/script>'); </script> 

मुझे लगता है कि ब्राउज़र के एचटीएमएल पार्सर को <script>, और मुख्यतः </ script> को वास्तविक स्क्रिप्ट के समापन टैग के रूप में व्याख्या करने से रोकने के लिए है, हालांकि मुझे नहीं लगता कि दस्तावेज़ का उपयोग करना। लिखना स्क्रिप्ट का मूल्यांकन करने के लिए एक उत्कृष्ट विचार है ब्लॉक, क्यों DOM का उपयोग नहीं करते …

 var newScript = document.createElement("script"); ... 

किसी अन्य प्रकार की आवश्यकता के बिना एक स्क्रिप्ट टैग इनलाइन (इसलिए इसे तत्काल निष्पादित) उत्पन्न करने के लिए उपयोग करते हुए मैंने एक और भिन्नता का उपयोग किया है:

 <script> var script = document.createElement('script'); script.src = '/path/to/script.js'; document.write(script.outerHTML); </script> 

(ध्यान दें: नेट पर अधिकतर उदाहरणों के विपरीत, मैं न तो सम्मिलित किया गया टैग पर न ही type="text/javascript" सेटिंग नहीं कर रहा हूं, न ही एक जेनरेट किया गया है: कोई ऐसा ब्राउज़र नहीं है जिसकी डिफ़ॉल्ट रूप में है, और इसलिए यह बेमानी है , लेकिन अगर आप इससे असहमत हैं, तो या तो चोट नहीं पहुंचेगी)।

समाधान Bobince मेरे लिए पूरी तरह से काम करता है। भविष्य के आगंतुकों के लिए मैं एक वैकल्पिक विधि भी देना चाहता था:

 if (typeof(jQuery) == 'undefined') { (function() { var sct = document.createElement('script'); sct.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js'; sct.type = 'text/javascript'; sct.async = 'true'; var domel = document.getElementsByTagName('script')[0]; domel.parentNode.insertBefore(sct, domel); })(); } 

इस उदाहरण में, मैंने उपयोग केस को प्रदर्शित करने के लिए jQuery के लिए एक सशर्त लोड शामिल किया है। आशा है कि किसी के लिए उपयोगी है!

जावास्क्रिप्ट स्ट्रिंग लिटराल के अंदर </script> एचटीएमएल पार्सर द्वारा एक समापन टैग के रूप में व्याख्या की जाती है, जिसके कारण अनपेक्षित व्यवहार होता है ( जेएसएफडल पर उदाहरण देखें )।

इस से बचने के लिए, आप अपनी जावास्क्रिप्ट टिप्पणी के बीच रख सकते हैं (कोडिंग की यह शैली सामान्य प्रैक्टिस थी, जब जावास्क्रिप्ट ब्राउज़र के बीच काफी खराब था)। यह काम करेगा ( जेएसएफडेल में उदाहरण देखें ):

 <script type="text/javascript"> <!-- if (jQuery === undefined) { document.write('<script type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/javascripts/lib/jquery/jquery-1.2.6.pack._V265113567_.js"></script>'); } // --> </script> 

… लेकिन ईमानदारी से, document.write का उपयोग करना। लिखना कुछ ऐसा नहीं है जो मैं सर्वोत्तम अभ्यास पर विचार करेगा। क्यों नहीं DOM सीधे हेरफेर?

 <script type="text/javascript"> <!-- if (jQuery === undefined) { var script = document.createElement('script'); script.setAttribute('type', 'text/javascript'); script.setAttribute('src', 'http://z-ecx.images-amazon.com/images/G/01/javascripts/lib/jquery/jquery-1.2.6.pack._V265113567_.js'); document.body.appendChild(script); } // --> </script>