2009-12-18 8 views
9

यह विषय कार्यालय में एक गर्म चर्चा में बदल गया, इसलिए मुझे यह जानने में दिलचस्पी है कि आप क्या सोचते हैं।कस्टम HTML विशेषताओं का उपयोग करने के ठोस जोखिम क्या हैं?

हम एक ऐसे वेब ऐप पर काम कर रहे हैं जो केवल कुछ विशिष्ट ब्राउज़रों को लक्षित करता है। इन ब्राउज़रों में वर्तमान में विभिन्न स्वाद ओपेरा 9 और मोज़िला 1.7.12 शामिल हैं। भविष्य में हमें ओपेरा 10 और वेबकिट के विभिन्न स्वादों का भी समर्थन करना होगा। लेकिन यह बहुत ही असंभव है कि हमें कभी भी आईई के किसी भी संस्करण से निपटना होगा।

हमारा वेब ऐप एचटीएमएल 4.0 को इसके सिद्धांत में सख्त घोषित करता है।

हाल ही में, मैंने HTML में कस्टम विशेषताओं का उपयोग करने के लिए एक विशिष्ट समस्या के समाधान के रूप में प्रस्तावित किया। मैं कुछ है कि इस प्रकार दिखाई देगा प्रस्तावित:

<span translationkey="someKey">...</span> 

चूंकि यह मान्य HTML 4 नहीं है, यह नीचे में अच्छी तरह से हमारे एचटीएमएल लोगों के साथ जाना नहीं था, और हम एक बहस में मिला है।

मेरा प्रश्न यह है: क्या - यदि कोई है - कस्टम विशेषताओं का उपयोग करने का जोखिम हैं? मुझे पता है कि पृष्ठ मान्य नहीं होगा, लेकिन क्या सभी ब्राउज़र केवल उन विशेषताओं को अनदेखा नहीं करते हैं जिन्हें वे नहीं जानते हैं? या क्या यह कल्पना की जा सकती है कि कुछ ब्राउज़र "क्विर्क मोड" में बदल जाएंगे और पृष्ठ को प्रस्तुत करेंगे जैसे कि यह सख्त HTML 4.0 के अलावा कुछ और था?

अद्यतन:

Hilited वास्तविक सवाल उठाया।

उत्तर

13

कोई ब्राउज़र सीमाएं/जोखिम नहीं हैं। केवल डब्ल्यू 3 वैधकर्ता छाल जाएगा, लेकिन भौंकने वाले कुत्तों का काटने नहीं होता है। एक प्रयोक्ता एजेंट एक विशेषता में मान्यता नहीं देता का सामना करना पड़ता

  • है, यह पूरे विशेषता विनिर्देश (जैसे कि, विशेषता और अपने मूल्य) की उपेक्षा करना चाहिए:

    w3 spec निम्नलिखित कहते हैं।

आईई भी quirks मोड या तो में प्रस्तुत करना नहीं जाएगा के रूप में कुछ सोच सकते हैं। यह केवल अमान्य/मजबूर सिद्धांतों पर ही करेगा, अमान्य विशेषताओं पर नहीं।

हालांकि, ध्यान रखें कि कुछ जावास्क्रिप्ट पुस्तकालय/ढांचे "अदृश्य रूप से" डीओएम पेड़ में कस्टम HTML विशेषताओं को जोड़/उपयोग करेंगे, जैसे कि कई jQuery प्लगइन्स करते हैं। इस तरह आप गुणों में टकराव का जोखिम उठा सकते हैं क्योंकि यह "संयोग से" उसी नाम के साथ एक विशेषता का उपयोग करता है जैसा आप अपने उद्देश्यों के लिए करते हैं। अफसोस की बात यह अक्सर खराब होती है या यहां तक ​​कि दस्तावेज भी नहीं होती है।

+0

मैंने यह उत्तर स्वीकार कर लिया क्योंकि यह मेरे द्वारा उठाए गए प्रश्न को संबोधित करता है। हालांकि, कुछ प्रकार का आधिकारिक स्रोत अच्छा होगा। – KaptajnKold

+0

मैंने w3 से एक उद्धरण जोड़ा। – BalusC

+0

+1 डब्ल्यू 3 स्रोत और विशिष्ट उद्धरण के लिए धन्यवाद :) –

10

एचटीएमएल 5 कस्टम एक 'डेटा-' उपसर्ग का उपयोग करते हुए जिम्मेदार बताते हैं अनुमति देता है, http://ejohn.org/blog/html-5-data-attributes/

+0

मुझे पता है। हां, जिन ब्राउज़रों को हमें समर्थन करने की आवश्यकता है, वे एचटीएमएल 5 का समर्थन करते हैं। – KaptajnKold

+0

फिर आप अभी तक 'डेटा-अनुवादकी = "कुछ की विशेषता क्यों नहीं देते हैं? – Boldewyn

9

देख अपने एक लक्ष्य बनाए रखने के लिए तो वैध html4.0 सख्त, तो इससे कोई फ़र्क नहीं पड़ता कि आप कस्टम विशेषताओं में क्यों डालना चाहते हैं, आप लक्ष्य तोड़ रहे हैं।

मुझे लगता है कि आपको पूछने की आवश्यकता है, तो आपको अपनी इच्छित कार्यक्षमता प्राप्त करने के लिए 4.0 सख्त तोड़ने की आवश्यकता क्यों है: कुछ भी जो आप अपने लिए एक कस्टम विशेषता का उपयोग कर सकते हैं, आप किसी मौजूदा विशेषता में उपयोग कर सकते हैं:

<span translationkey="someKey">...</span> 

हो सकता है:

<span class="[email protected]">...</span> 

यह पूरी कक्षा की जानकारी पार्स करने के लिए कुछ अतिरिक्त चक्र होगा, लेकिन इतने लंबे समय आप उस वर्ग पर किसी भी सीएसएस जानकारी नहीं डाल करते हैं, यदि ऐसा नहीं होता डिस्प्ले बदलें, आपको क्विर्क मोड में नहीं डालता है, और आपको काम पर झगड़े में नहीं लेता है।

+1

मेरा विचार यह है कि यह मानक का पालन करने के लिए अपने आप में एक लक्ष्य नहीं होना चाहिए। हम html4.0 सख्त का उपयोग कर रहे हैं क्योंकि हम एक विशिष्ट ब्राउज़र व्यवहार सुनिश्चित करना चाहते हैं। तो मेरा सवाल वास्तव में है: क्या मैं कस्टम गुणों का उपयोग करके इस उद्देश्य को खतरे में डालता हूं? – KaptajnKold

+0

शानदार उत्तर, एमईएल – Hardryv

+1

अपने प्रश्न का उत्तर देने के लिए: कस्टम विशेषता MooTools में DOM में तत्वों को देखने के लिए बहुत सुविधाजनक बनाता है: foo.getElements ("[myAttr]") myAttr विशेषता के साथ foo के सभी बच्चे नोड्स को पाता है। आपके प्रस्तावित समाधान का उपयोग करना बहुत जटिल और संभावित रूप से धीमा होगा। – KaptajnKold

0

यदि पृष्ठ को HTML 4 सख्त घोषित किया गया है, तो उसे उस विशेषता को नहीं जोड़ना चाहिए जो उस HTML निर्दिष्ट में उपयोग नहीं किया जाता है। अलग-अलग, यह स्पष्ट नहीं है कि ब्राउज़र क्या व्यवहार करेंगे।
जैसा कि पहले से ही बताया गया है, अतिरिक्त विशेषताओं को जोड़ने का एक तरीका उन्हें कक्षाओं के रूप में जोड़ना है, भले ही इसमें कुछ सीमाएं हों।

1

या यह कल्पना की जा सकती है कि कुछ ब्राउज़र "quirks मोड" में बदल जाएंगे और पृष्ठ प्रस्तुत करेंगे जैसे कि यह सख्त HTML 4.0 के अलावा कुछ और था?

नहीं, खराब गुण एक प्रतिपादन मोड परिवर्तन को मजबूर नहीं करेंगे।

यदि आपको सत्यापन की परवाह नहीं है तो आपको क्या पसंद है, लेकिन सत्यापन सरल गलतियों का पता लगाने के लिए एक उपयोगी टूल है जो अन्यथा आप डिबगिंग के आसपास पीछा कर सकते हैं। यह देखते हुए कि जावास्क्रिप्ट को डेटा पास करने के लिए कई अन्य बिल्कुल अच्छे विकल्प हैं I सत्यापन के बजाय, उनमें से एक का उपयोग करना पसंद करते हैं।

प्लस, जब आप मनमाने ढंग से विशेषता जोड़ते हैं तो आप प्रभावी रूप से वैश्विक नामस्थान में खेल रहे हैं। इस बात की कोई गारंटी नहीं है कि कुछ भावी ब्राउज़र या मानक कुछ नई सुविधा के लिए 'translationkey' नाम का उपयोग करने का निर्णय नहीं लेंगे जो आपकी स्क्रिप्ट को यात्रा करेगा। इसलिए यदि आपको विशेषताओं को जोड़ना है, तो उन्हें एक ऐसा नाम दें जो अस्पष्ट है और अद्वितीय होने की संभावना है, या केवल HTML5 data- उपसर्ग का उपयोग करें।

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