2014-08-29 48 views
10

यह एक प्रसिद्ध तथ्य है कि ब्राउज़र अमान्य HTML स्वीकार करेंगे और इससे बाहर निकलने का सर्वोत्तम प्रयास करेंगे। आप केवल निम्नलिखित कोड के साथ एक वेब पेज बनाते हैं:ब्राउज़र HTML के बारे में सख्त क्यों नहीं हैं?

<html> 
    <head> 
     <title>This is bad HTML</title> 
    <body> 
     <h1>Bad HTML</h2> 
     <p>This is a paragraph 
    </body> 

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

यह मेरे लिए एक ही रूप में यदि जावास्क्रिप्ट इस तरह लिखा जा सकता है:

if (some_var == 1) { 
    say_something("some text'); 
else { 
    do_something_else(); 
// END OF CODE 

जो, एक जावास्क्रिप्ट संकलक अमान्य कोड से बाहर मेकअप भावना के लिए एक ही प्रयास के साथ लिखा proably पार्स सकता है जैसा कि आप - या अपनी समझ बनाते हैं लेकिन इसे बाद में चलाते हैं।

मैंने प्रश्न के संबंध में कई लेख और प्रश्न देखे हैं "क्या यह वैध HTML लिखने के लायक है?", जो मान्य HTML लिखने के पेशेवरों और विपक्ष पर कई राय प्रस्तुत करते हैं। हालांकि, यह वास्तव में मुझे आश्चर्यचकित करता है:

ब्राउज़र अवैध HTML को क्यों स्वीकार कर रहे हैं?

नोट:

  • क्यों ब्राउज़रों सख्त नहीं हैं: निम्न सवालों नहीं अधिक सवाल, लेकिन केवल सवाल का संदर्भ देने के लिए एक तरह से मैं यहाँ पूछ रहा हूँ कर रहे हैं?

  • क्यों वे अन्य प्रोग्रामिंग भाषा की तरह त्रुटियों के अमान्य कोड से अस्वीकार नहीं करते हैं? (नहीं है कि मैं HTML फोन कर रहा हूँ एक प्रोग्रामिंग भाषा है, लेकिन आप समझ गए होंगे)

  • चाहेंगे नहीं है कि बल सभी डेवलपर्स है कि किसी भी ब्राउज़र में बिल्कुल एक ही व्याख्या की जाएगी एचटीएमएल कोड लिखने के लिए?

  • यदि ब्राउज़र ने अवैध मार्कअप को पार्स करने से इनकार कर दिया है, तो क्या यह प्रभावी रूप से वेब पर सामग्री प्रकाशित करने के इच्छुक व्यक्ति से वैध मार्कअप में प्रभावी नहीं होगा?

  • यदि यह ऐतिहासिक कारणों और पिछड़े संगतता से आता है, तो क्या यह पहले से ही बदलने के लिए समय नहीं है जब हम पहले से ही adsense.google.com जैसी साइटों को आईई < v10 के साथ संगतता से इंकार कर रहे हैं?

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

+6

ओह गीज़। * Waaayyy * इतिहास द्वारा बहुत व्यापक और अक्षम (यह सुंदर नहीं है, brutha, यह नीचे * quirky * है)। और, ओह, प्रारंभिक जावास्क्रिप्ट (पहले संभवतः 10 साल का लायक) दुखद रूप से भयानक था। –

+0

ईमानदारी से यह एक सवाल है कि हम डेवलपर प्रकार वर्षों से सोच रहे हैं ... –

+0

@ जेरेडफिशिश: मैं ईमानदारी से नहीं देखता कि इसके बारे में "बहुत व्यापक" क्या है। यह एक बहुत ही विशिष्ट विषय पर एक बहुत ही विशिष्ट सवाल है। –

उत्तर

5

कारण है कि वे यह शुरू से ही अनुमति दी मैं नहीं जानता, लेकिन यहाँ है क्यों वे नहीं कर सकते अब स्विच: विरासत समर्थन। यदि किसी ब्राउज़र ने सख्त एचटीएमएल को मजबूर किया, तो इंटरनेट के विशाल हिस्से बस टूट जाएंगे, और हाँ कुछ लोग अपना कोड अपडेट करेंगे, लेकिन कुछ पेज अभी खो जाएंगे। ऐसा करने के लिए ब्राउज़र के लिए कोई प्रोत्साहन नहीं है क्योंकि यह उपभोक्ता को लगता है कि ब्राउजर कुछ पृष्ठों पर काम नहीं करता है और दूसरे पर स्विच करेगा जो अभी भी कम इष्टतम एचटीएमएल का समर्थन करता है।

मूल रूप से क्योंकि इसे शुरुआत से ही अनुमति दी गई थी, अब इसे अब अनुमति दी जानी चाहिए।

+1

मानक समूह HTML का एक बहुत सख्त संस्करण तैयार कर सकते हैं जो किसी भी तरह की सामग्री को घुटने टेकता है जो इसके पार्स नियमों की रेखा को टोन नहीं करता है, लेकिन विडंबना यह है कि एचटीएमएल 5 * (1) की तुलना में एचटीएमएल 5 * कम सख्त * बनने वाली शक्तियां ठीक है क्योंकि सख्तता * वेब ब्राउजर स्पेस के संदर्भ में कोई फर्क नहीं पड़ता। –

+2

@falsarella: ब्राउजर एक बड़ी लाल पट्टी डालने शुरू कर सकते हैं जिसमें कहा गया है कि मार्कअप में त्रुटियां हैं क्योंकि यह खराब लिखा गया था, और फिर भी सामग्री दिखाता है। इससे उपयोगकर्ता को इसके बारे में पता चल जाएगा, ब्राउज़र से ही ज़िम्मेदारी लेनी होगी, और खराब एचटीएमएल writters पर बहुत शर्मिंदा होना होगा, जो जल्दी से वैध मार्कअप लिखने के प्रयास करने वाले कोडर की ओर ले जाएगा और वास्तव में उनकी शुद्धता पर गर्व महसूस करेगा। –

+3

@ फ्रांसिस्को ज़ाराबोज़ो: यदि उपयोगकर्ता मान्य है या नहीं, तो उपयोगकर्ता परवाह नहीं है। – thirtydot

1

राय-आधारित उत्तरों से बचने के लिए, इस प्रकार के प्रश्न को authorative reference with credible and/or official sources पर आधारित एक उत्तर की आवश्यकता है।

निम्नलिखित अंश W3C Validator Help & FAQ कि Why are browsers accepting invalid HTML in the first place? और कुछ अन्य प्रदर्शन किया है कि से संबंधित चिंताओं के पते से बोलियां हैं। वर्ल्ड वाइड वेब पर


About Markup

अधिकांश पृष्ठों, (जैसे HTML के रूप में) कंप्यूटर भाषाओं कि वेब लेखकों, पाठ संरचना मल्टीमीडिया सामग्री जोड़ने के लिए, और क्या उपस्थिति निर्दिष्ट कर सकते हैं में लिखे गए हैं या शैली, परिणाम होना चाहिए।

प्रत्येक भाषा के लिए, इनके पास अपनी व्याकरण, शब्दावली और वाक्यविन्यास है, और इन कंप्यूटर भाषाओं के साथ लिखे गए प्रत्येक दस्तावेज़ इन नियमों का पालन करना चाहते हैं। (एक्स) एचटीएमएल भाषाओं, XHTML 1.1 अप करने के लिए सभी संस्करणों, मशीन पठनीय व्याकरण का उपयोग कर रहे हैं के लिए DTDs, एक तंत्र SGML से विरासत में कहा जाता है।

हालांकि, बस के रूप में एक प्राकृतिक भाषा में ग्रंथों वर्तनी या व्याकरण त्रुटियाँ , मार्कअप भाषाओं का उपयोग (विभिन्न कारणों के लिए) नहीं इन नियमों का पालन हो सकता है दस्तावेजों में शामिल कर सकते हैं।

[...]


Concepts

कंप्यूटर प्रोग्रामिंग का महत्वपूर्ण maxims से एक है: "आप क्या उत्पादन में रूढ़िवादी रहें, आप क्या स्वीकार में उदार होना । "

ब्राउज़र्स वेब पृष्ठों को स्वीकार करने और उन्हें प्रदर्शित करने के लिए भले ही वे कानूनी एचटीएमएल नहीं कर रहे हैं कोशिश कर रहा द्वारा इस कहावत की दूसरी छमाही का पालन करें। आमतौर पर इसका मतलब है कि ब्राउज़र के बारे में शिक्षित अनुमान बनाने का प्रयास करेगा जो आप शायद चाहते थे। समस्या यह है कि अलग-अलग ब्राउज़र (या एक ही ब्राउज़र के अलग-अलग संस्करण) अलग-अलग समान अवैध निर्माण के बारे में अनुमान लगाएंगे; इससे भी बदतर, यदि आपका एचटीएमएल वास्तव में पैथोलॉजिकल है, तो ब्राउज़र निराशाजनक रूप से भ्रमित हो सकता है और एक उलझन वाली गड़बड़ी या यहां तक ​​कि क्रैश भी उत्पन्न कर सकता है।

है यही कारण है कि आप बनाकर कहावत की पहली छमाही का पालन करना चाहते सुनिश्चित करें कि आपके पृष्ठों कानूनी एचटीएमएल कर रहे हैं।

[...]


Validity might not mean quality, and invalidity might not mean poor quality

एक वैध वेब पेज जरूरी एक अच्छा वेब पेज नहीं है, लेकिन गलत वेब पेज एक अच्छा जा रहा है की संभावना बहुत कम है वेब पृष्ठ।

इसी कारण से, डब्ल्यू 3 सी मार्कअप वैलिडेटर का कहना है कि एक पृष्ठ पास सत्यापन पास करता है इसका मतलब यह नहीं है कि डब्ल्यू 3 सी का आकलन है कि यह अच्छा पृष्ठ है। यह केवल इसका मतलब है कि एक उपकरण (खामियों के बिना जरूरी नहीं) नियमों का एक विशिष्ट सेट के साथ पालन करने के लिए पृष्ठ मिल गया है। और नहीं, कम नहीं। यही कारण है कि "वैध ..." आइकन कभी भी को "गुणवत्ता की डब्ल्यू 3 सी सील" के रूप में नहीं माना जाना चाहिए।


Unexpected browser behavior might mean that they actually don't accept invalid markup

जबकि समकालीन वेब ब्राउज़र भी सबसे खराब एचटीएमएल "टैग सूप" पार्स करने की एक तेजी से अच्छा काम करने के, कुछ त्रुटियाँ हमेशा शान से पकड़ा नहीं कर रहे हैं। अक्सर, विभिन्न प्लेटफार्मों पर विभिन्न सॉफ्टवेयर नहीं त्रुटियों इसी तरह से संभाल, यह बहुत ही मुश्किल लगातार शैली या लेआउट लागू करने के लिए कर रही हो जाएगा।

अन्य हाथ पर मानक, इंटरऑपरेबल मार्कअप और स्टाइलशीट का उपयोग करके, किसी के पृष्ठ को प्लेटफार्मों और उपयोगकर्ता-एजेंटों में लगातार को संभालने का अधिक अवसर प्रदान करता है।

[...]


Compatibility problems

जांच की जा रही है कि एक पृष्ठ "ठीक प्रदर्शित करता है" कई समकालीन ब्राउज़रों में एक उचित बीमा हो सकता है कि पेज होगा "काम" आज, लेकिन गारंटी नहीं देता है कि यह कल काम करेगा।

अतीत में, नेटस्केप 1.1 के क्विर्क पर भरोसा करने वाले कई लेखकों ने अचानक पाया कि उनके पृष्ठ नेटस्केप 2.0 में पूरी तरह खाली हैं। जबकि इंटरनेट एक्सप्लोरर शुरू में बाहर सेट बग-संगत नेटस्केप के साथ हो सकता है, यह बहुत बाद में विज्ञप्ति में मानक अनुपालन की दिशा में ले जाया गया है।

[...]


Relying too much on 3rd party tools

यह एक करने के लिए जवाब है कि मार्कअप भाषाओं है अधिक कोई डेटा से स्वरूप हैं। तो एक वेबसाइट बिल्कुल कुछ नहीं दिखती है! जब यह आपके ब्राउज़र द्वारा प्रस्तुत किया जाता है तो यह केवल दृश्य दृश्य पर लेता है।

अभ्यास में, विभिन्न ब्राउज़र एक ही पृष्ठ को बहुत ही प्रदर्शित कर सकते हैं और प्रदर्शित कर सकते हैं। यह जानबूझकर है, और किसी भी प्रकार का ब्राउज़र बग का संकेत नहीं देता है। कभी-कभी इसके लिए इस्तेमाल किया जाने वाला शब्द WYSINWOG है - आप क्या देखते हैं अन्य क्या प्राप्त करते हैं (जब तक संयोग से नहीं)। यह वास्तव में वेब की प्रमुख ताकत है, जो कि (उदाहरण के लिए) एक दृष्टिहीन रूप से खराब उपयोगकर्ता प्रकाशक के बिना बहुत बड़ा प्रिंट या टेक्स्ट-टू-स्पीच चुन सकता है, जिससे अलग-अलग तैयार करने की परेशानी और खर्च हो सके संस्करण।

+1

मुझे लगता है कि यह वास्तव में "ब्राउज़र क्यों सख्त नहीं है" सवाल का जवाब नहीं देता है, लेकिन "हमें डब्ल्यू 3 सी नियमों का पालन क्यों करना चाहिए", जो कि अलग है। – Sugar

+0

@ क्लेमेंटमैलेट: हालांकि मैं लगभग आपके जैसा ही महसूस करता हूं, दूसरा पैराग्राफ इसका उत्तर देने के बहुत करीब आता है। अब तक किसी अन्य टिप्पणी या उत्तर से कहीं अधिक निकट: विशेष रूप से वह हिस्सा जो कहता है: 'कंप्यूटर प्रोग्रामिंग के महत्वपूर्ण अधिकतम में से एक यह है: "जो भी आप पैदा करते हैं उसमें रूढ़िवादी रहें; जो भी आप स्वीकार करते हैं उसमें उदार रहें।" ब्राउज़र वेब पेज स्वीकार करके और उन्हें प्रदर्शित करने की कोशिश कर रहे हैं, भले ही वे इस अधिकतम अधिकतम आधे हिस्से का पालन करें, भले ही वे कानूनी HTML नहीं हैं। ' –

+0

@ क्लेमेंटमैलेट मैंने अपने प्रश्न को' विषय पर 'भाग पर केंद्रित करने के लिए अपडेट किया है । – falsarella

4

"ब्राउज़र पहले स्थान पर अवैध HTML क्यों स्वीकार कर रहे हैं?"

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

इससे पहले HTML विनिर्देशों ऐसी क्या होता है जब गलत टैग देखा जाता है, या इस तरह के <b><i></b></i> रूप टैग, की असंगत घोंसले के रूप में, कई स्थितियों पर अस्पष्ट थे। फिर भी, कई दस्तावेज़ "बस काम करते हैं" क्योंकि कुछ पुराने ब्राउज़र अप्रत्याशित टैग या यहां तक ​​कि "सही" गलत घोंसले को अनदेखा करते हैं।

लेकिन अब एचटीएमएल 5 विनिर्देशों में HTML दस्तावेज़ों को पार्स करने के लिए much less ambiguous algorithm शामिल है। ध्यान दें कि एल्गोरिदम में वे बिंदु शामिल हैं जहां "पार्स त्रुटियां" हो सकती हैं। लेकिन इन पार्स त्रुटि आमतौर पर एक HTML दस्तावेज प्रदर्शित करने से एक आधुनिक ब्राउज़र रोक नहीं है, हालांकि ब्राउज़र अपने डेवलपर उपकरण में त्रुटियों को पार्स अगर यह करने के लिए चुनता प्रदर्शित करने के लिए नि: शुल्क है:

[यू] सेवा एजेंटों, पार्स करने के दौरान एक HTML दस्तावेज़, पार्सर को पहली पार्स त्रुटि पर रोक देगा जिसे वे सामना करते हैं जिसके लिए वे इस विनिर्देश में वर्णित नियमों को लागू नहीं करना चाहते हैं।

लेकिन फिर से, कोई आधुनिक ब्राउज़र, मेरी जानकारी के लिए, किसी दस्तावेज़ इस प्रारंभिक क्योंकि पार्स त्रुटि की (जैसे स्मृति से बाहर चल रहा है के रूप में छोड़कर असाधारण स्थितियों,) को पार्स रोकता [जोर जोड़ा।]।

adsense.google.com स्थिति पर: शायद इसका अमान्य HTML से कोई लेना देना नहीं है, बल्कि, शायद, क्योंकि IE9 और पहले का DOM समर्थन adsense.google.com की ज़रूरतों के लिए पर्याप्त नहीं है।

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