2011-05-11 37 views
12

संभव डुप्लिकेट:
Why don't self-closing script tags work?<script></script> या <script />?

मैं सिर्फ HTML में स्क्रिप्ट टैग के साथ एक weired व्यवहार का पता चला।

मैं वेब सर्वर nginx है, और मैंने तेजी से CGI और PHP5 का उपयोग किया।

<html> 
    <body> 
    <!-- <?php echo 'i am going to add php code here'; ?> --> 
    <script type="text/javascript" src="./my/javascript1.js" /> 
    <script type="text/javascript" src="./my/javascript2.js" /> 
    </body> 
</html> 

तो यह पेज वेब सर्वर से सीधे परोसा जाता है, जावा स्क्रिप्ट अच्छी तरह से काम करता है: मैं एक page.html है, जो इस तरह दिखता है। लेकिन अगर यह PHP5 तक पहुंचा, तो ऐसा लगता है कि केवल पहला जावा स्क्रिप्ट टैग निष्पादित किया गया है। लेकिन अगर मैं में स्क्रिप्ट ब्लॉक बदलने के लिए:

<script type="text/javascript" src="./my/javascript1.js"></script> 
    <script type="text/javascript" src="./my/javascript2.js"></script> 

सब कुछ फिर से काम करता है। नोट किया गया कि टैग कैसे बंद हैं? हाँ, यही कारण है कि मैं यहाँ पूछ रहा हूँ। अंतर क्या है? वे एक ही समारोह/अर्थ माना जाता है। इसके अलावा, आउटपुट एचटीएमएल जो मेरा वेब ब्राउजर (क्रोम/आईई 9) प्राप्त हुआ वही है, लेकिन अलग तरीके से क्यों व्यवहार किया जाता है?

+2

"अगर यह php5 में पास हो गया" से आपका क्या मतलब है? – Nanne

+3

आगे पढ़ने: http://stackoverflow.com/questions/69913/why-dont-self-closing-script-tags-work – JohnP

+0

@Nanne ने Nginx में एक हैंडल सेट किया है ताकि पृष्ठ PHP5 द्वारा संसाधित हो। – davidshen84

उत्तर

9

स्क्रिप्ट टैग को वैध कोड होने के लिए एक अलग समापन टैग की आवश्यकता होती है। देखें http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1

कुछ ब्राउज़र स्वयं बंद टैग स्वीकार करेंगे, अन्य लोग नहीं होंगे, और आपके द्वारा उपयोग किए जा रहे HTML संस्करण भी परिणाम को प्रभावित करते हैं। जब तक आप एक्सएचटीएमएल का उपयोग नहीं करते हैं तब तक स्वयं बंद टैग नहीं होते हैं।

PHP इंजन के माध्यम से फ़ाइल को पास करने से परिणाम नहीं बदला जाना चाहिए, लेकिन यह संभव है कि यह गलत स्क्रिप्ट टैग को सही करने का प्रयास करे। यह देखने के लिए कि क्या टैग बदल दिए गए हैं, आपको ब्राउजर में स्रोत देखना चाहिए।

+0

इस भाग का जवाब देने के लिए एक शॉट लेना चाहते हैं - 'यदि यह पृष्ठ सीधे वेब सर्वर से परोसा जाता है, तो जावा स्क्रिप्ट अच्छी तरह से काम करती है। लेकिन अगर यह PHP5' पास हो गया? मुझे लगता है कि वह PHP बनाम एचटीएमएल का मतलब है। – JohnP

4

स्क्रिप्ट टैग के पास एक बंद टैग होना आवश्यक है, भले ही यह src विशेषता का उपयोग करता हो। इससे बचने से अवांछित व्यवहार होते हैं।

-1

ऐसा प्रतीत होता है कि आपका सर्वर HTML के बजाय एक्सएचटीएमएल आउटपुट करने के लिए कॉन्फ़िगर किया गया है। एचटीएमएल में <tag /> जैसी कोई चीज नहीं है। लेकिन एक्सएमएल उनके पास है।

दोनों मामलों में दस्तावेज़ प्रकार की घोषणा की जांच करें। <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" और आपके दस्तावेज़ की शुरुआत में ही।

-3

यह मूल रूप से में उल्लिखित DocType पर निर्भर है।

DocTypetransitional XHTML उल्लेख किया जाता है तो यह स्क्रिप्ट टैग इस <script ... /> तरह बंद किए जाने की अनुमति नहीं होगी। यह केवल इस तरह टैग को बंद करने की अनुमति देगा। <script ... ></script> और इसी तरह से।

यदि DocTYpeXHTML से कुछ अन्य है तो यह उस मामले में ब्राउज़र संगतता पर निर्भर करेगा।

एक संदर्भ के लिए, इसे देखें ...

http://www.w3schools.com/tags/tag_doctype.asp

+3

यह सही नहीं है। उपयोग किए गए HTML संस्करण के बावजूद, बंद टैग हमेशा आवश्यक है। – Guffa

+0

जिस चीज का मैंने ऊपर उल्लेख किया है वह 100% सही है (हालांकि बुकिश नहीं है), लेकिन यह अधिकांश ब्राउज़रों (आईई 6 समेत) के साथ काम करता है –

+1

कोई ब्राउज़र जो मुझे पता है, किसी भी एचटीएमएल में '

0

तरीका आपके ब्राउज़र अपने HTML व्याख्या पीएचपी के साथ क्या करना है, क्योंकि यह एक HTML पार्सर नहीं है कुछ भी नहीं है। कुछ ब्राउज़र इसे स्वीकार करते हैं। दूसरों को नहीं .... यह भी link देखें। अधिक प्रश्न & ए के बारे में एक ही विषय

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