html - एक्सएचटीएमएल में सभी मान्य आत्म-बंद तत्व क्या हैं(जैसा कि प्रमुख ब्राउज़रों द्वारा कार्यान्वित किया गया है)?




xhtml browser (9)

एक्सएचटीएमएल में सभी वैध आत्म-बंद तत्व (जैसे <br/>) क्या हैं (जैसा कि प्रमुख ब्राउज़रों द्वारा कार्यान्वित किया गया है)?

मुझे पता है कि एक्सएचटीएमएल तकनीकी रूप से किसी भी तत्व को स्वयं बंद करने की अनुमति देता है, लेकिन मैं उन सभी तत्वों की सूची ढूंढ रहा हूं जो सभी प्रमुख ब्राउज़रों द्वारा समर्थित हैं। स्वयं को बंद करने वाले तत्वों जैसे <div /> के कारण कुछ समस्याओं के उदाहरणों के लिए http://dusan.fora.si/blog/self-closing-tags देखें।


<घंटा /> एक और है


आईई के लिए एक और स्वयं बंद टैग समस्या शीर्षक तत्व है। जब आईई (आईई 7 में बस कोशिश की) यह देखता है, यह उपयोगकर्ता को एक खाली पृष्ठ प्रस्तुत करता है। हालांकि आप "स्रोत देखें" और सबकुछ वहां है।

<title/>

मैंने मूल रूप से यह देखा जब मेरे एक्सएसएलटी ने स्वयं बंद टैग उत्पन्न किया।


इस विषय पर बहुत सावधान रहने वाला एक तत्व <script > तत्व है। यदि आपके पास बाहरी स्रोत फ़ाइल है, तो जब आप इसे बंद कर देते हैं तो इससे समस्याएं उत्पन्न हो जाएंगी। कोशिश करो:

<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />

यह फ़ायरफ़ॉक्स में काम करेगा, लेकिन कम से कम आईई 6 में टूटता है। मुझे पता है, क्योंकि जब मैं ज़्यादा उत्साह से स्वयं को देखता हूं तो हर तत्व को बंद कर देता हूं ;-)


उन्हें HTML 5 में "शून्य" तत्व कहा जाता है। वे आधिकारिक W3 spec में सूचीबद्ध हैं।

एक शून्य तत्व एक तत्व है जिसका सामग्री मॉडल इसे किसी भी परिस्थिति में सामग्री रखने की अनुमति नहीं देता है।

अप्रैल 2013 तक, वे हैं:

क्षेत्र, आधार, पीआर, कॉल, कमांड, एम्बेड, घंटा, आईएमजी, इनपुट, keygen, लिंक, मेटा, param, स्रोत, ट्रैक, wbr


एक्सएचटीएमएल (फ़ायरफ़ॉक्स, ओपेरा, सफारी, आईई 9) का समर्थन करने वाला हर ब्राउज़र प्रत्येक तत्व पर स्वयं-समापन वाक्यविन्यास का समर्थन करता है

<div/> , <script/> , <br></br> सभी को ठीक काम करना चाहिए। यदि वे नहीं करते हैं, तो आपके पास HTML को अनुपयुक्त XHTML DOCTYPE के साथ HTML है

DOCTYPE नहीं बदलता है कि दस्तावेज़ का अर्थ कैसे लिया जाता है। केवल एमआईएम प्रकार करता है

DOCTYPE को अनदेखा करने के बारे में डब्ल्यू 3 सी निर्णय :

एचटीएमएल डब्ल्यूजी ने इस मुद्दे पर चर्चा की है: इरादा पुराने (एचटीएमएल-केवल) ब्राउज़र को दिशानिर्देशों का पालन करके एक्सएचटीएमएल 1.0 दस्तावेजों को स्वीकार करने और पाठ / एचटीएमएल के रूप में सेवा करने की अनुमति देना था। इसलिए, पाठ / एचटीएमएल के रूप में कार्य किए गए दस्तावेज़ों को HTML के रूप में माना जाना चाहिए और एक्सएचटीएमएल के रूप में नहीं माना जाना चाहिए।

यह एक बहुत ही आम गड़बड़ी है, क्योंकि डब्ल्यू 3 सी वैलिडेटर बड़े पैमाने पर उस नियम को अनदेखा करता है, लेकिन ब्राउज़र इसे धार्मिक रूप से पालन करते हैं। वेबकिट ब्लॉग से एचटीएमएल, एक्सएमएल और एक्सएचटीएमएल को समझना पढ़ें:

वास्तव में, इंटरनेट पर माना जाता है कि एक्सएचटीएमएल दस्तावेजों का विशाल बहुमत text/html रूप में कार्य किया जाता है। जिसका अर्थ यह है कि वे एक्सएचटीएमएल नहीं हैं, लेकिन वास्तव में अवैध HTML है जो HTML पार्सर्स की त्रुटि प्रबंधन पर हो रहा है। वेब पर उन सभी "मान्य एक्सएचटीएमएल 1.0!" लिंक वास्तव में "अमान्य HTML 4.01!" कह रहे हैं।

यह जांचने के लिए कि क्या आपके पास एक्सएचटीएमएल के DOCTYPE के साथ वास्तविक एक्सएचटीएमएल या अमान्य HTML है, इसे अपने दस्तावेज़ में रखें:

<span style="color:green"><span style="color:red"/> 
 If it's red, it's HTML. Green is XHTML.
</span>

यह मान्य है, और वास्तविक एक्सएचटीएमएल में यह पूरी तरह से काम करता है (देखें: 1 बनाम 2 )। अगर आप अपनी आंखों पर विश्वास नहीं कर सकते (या एमआईएमई प्रकारों को सेट करने के बारे में नहीं जानते), तो एक्सएचटीएमएल प्रॉक्सी के माध्यम से अपना पेज खोलें।

जांचने का एक और तरीका फ़ायरफ़ॉक्स में स्रोत देखें। यह अमान्य होने पर लाल रंग में स्लेश को हाइलाइट करेगा।

एचटीएमएल 5 / एक्सएचटीएमएल 5 में यह नहीं बदला है, और भेद भी स्पष्ट है, क्योंकि आपके पास अतिरिक्त DOCTYPE भी नहीं है। Content-Type राजा है।

रिकॉर्ड के लिए, एक्सएचटीएमएल स्पेक एक्सएचटीएमएल को एक्सएमएलएम एप्लीकेशन बनाकर किसी भी तत्व को स्वयं बंद करने की अनुमति देता है: [जोर मेरा]

रिक्त-तत्व टैग का उपयोग किसी भी तत्व के लिए किया जा सकता है जिसमें कोई सामग्री नहीं है , चाहे वह कीवर्ड EMPTY का उपयोग करके घोषित किया गया हो या नहीं।

यह एक्सएचटीएमएल स्पेक में भी स्पष्ट रूप से दिखाया गया है:

खाली तत्वों के पास या तो अंत टैग होना चाहिए या प्रारंभ टैग /> साथ समाप्त होना चाहिए। उदाहरण के लिए, <br/> या <hr></hr>


पिछली बार मैंने चेक किया था, निम्नलिखित HTML5 में सूचीबद्ध रिक्त / शून्य तत्व थे।

लेखकों के लिए मान्य: क्षेत्र, आधार, पीआर, कर्नल, कमांड, एम्बेड, घटनाक्रम, घंटा, आईएमजी, इनपुट, लिंक, मेटा, परम, स्रोत

लेखकों के लिए अमान्य: बेसफॉन्ट, bgsound, फ्रेम, स्पेसर, wbr

एचटीएमएल 5 में नए कुछ के अलावा, आपको उन लोगों के बारे में एक विचार देना चाहिए जो एक्सएचटीएमएल को टेक्स्ट / एचटीएमएल के रूप में सेवा करते समय समर्थित हो सकते हैं। (उत्पादित डीओएम की जांच करके बस उनका परीक्षण करें।)

चूंकि एक्सएचटीएमएल ने एप्लीकेशन / एक्सएचटीएमएल + एक्सएमएल (जो इसे एक्सएमएल बनाता है) के रूप में कार्य करता है, एक्सएमएल नियम लागू होते हैं और कोई भी तत्व खाली हो सकता है (भले ही एक्सएचटीएमएल डीटीडी इसे व्यक्त नहीं कर सकता)।


मैं इस पर अधिक विस्तार करने की कोशिश नहीं कर रहा हूं, खासतौर से चूंकि मेरे द्वारा लिखे गए अधिकांश पृष्ठ या तो उत्पन्न होते हैं या टैग में सामग्री होती है। केवल दो जो मुझे स्वयं को बंद करते समय परेशानी देते हैं:

<title/>

इसके लिए, मैंने हमेशा इसे एक अलग बंद टैग देने का सहारा लिया है, क्योंकि एक बार यह <head></head> यह वास्तव में आपके कोड को किसी भी तरह से काम करने के लिए कोई गड़बड़ नहीं बनाता है।

<script/>

यह एक बड़ा है जिसे मैंने हाल ही में समस्याओं में भाग लिया। जब तक स्क्रिप्ट किसी बाहरी स्रोत से आ रही है, तो सालों से मैंने हमेशा स्वयं बंद <script/> टैग का उपयोग किया था। लेकिन मैंने हाल ही में जावास्क्रिप्ट त्रुटि संदेशों को एक शून्य रूप के बारे में प्राप्त करना शुरू कर दिया है। कई दिनों के शोध के बाद, मैंने पाया कि समस्या (माना जाता है) कि ब्राउज़र कभी भी <form> टैग पर नहीं पहुंच रहा था क्योंकि यह नहीं पता था कि यह <script/> टैग का अंत था। तो जब मैंने इसे अलग <script></script> टैग में बनाया, तो सबकुछ काम करता था। एक ही ब्राउज़र पर किए गए विभिन्न पृष्ठों में अलग क्यों है, मुझे नहीं पता, लेकिन समाधान खोजने के लिए यह एक बड़ी राहत थी!


स्व-समापन वाक्यविन्यास अनुप्रयोग / xhtml + xml में सभी तत्वों पर काम करता है। यह टेक्स्ट / एचटीएमएल में किसी भी तत्व पर समर्थित नहीं है, लेकिन एचटीएमएल 4 में "खाली" या एचटीएमएल 5 में "शून्य" तत्व जो भी अंत टैग नहीं लेते हैं, इसलिए यदि आप उन पर स्लैश डालते हैं तो ऐसा लगता है आत्म-समापन वाक्यविन्यास समर्थित थे।


<meta> और <link> बारे में क्या? वे उस सूची में क्यों नहीं हैं?

अंगूठे का त्वरित नियम, सामग्री रखने के उद्देश्य से किसी भी तत्व को स्वयं बंद न करें, क्योंकि इससे निश्चित रूप से ब्राउज़र समस्याएं जल्द या बाद में हो सकती हैं।

जो स्वाभाविक रूप से आत्म-बंद होते हैं, जैसे <br> और <img> , स्पष्ट होना चाहिए। जो लोग नहीं हैं ... बस उन्हें बंद न करें!





cross-browser