2013-09-06 6 views
34

अधिकतर ब्राउज़र आपको पसंद करते हुए कोई भी तत्व टैग बनाने की अनुमति देते हैं, और तत्वों को पसंद करते हुए कोई भी विशेषता नाम जोड़ते हैं। उदाहरण के लिए:AngularJS कस्टम HTML5 तत्व टैग और विशेषताओं का उपयोग करने से कैसे दूर हो जाता है?

<!DOCTYPE html> 
<html> 
<body> 
<div my-attribute="has no data- prefix, but seems to behave like an attribute should"> 
    <br/> 
    <hello-world style="display:block;background:#eee">Hello Everybody</hello-world> 
    <goodby-world style="background:#faa">Default display is inline</goodbye-world> 
</div> 
</body> 
</html> 

ऊपर दिखाया गया ठीक है। ऐसा लगता है कि अपरिभाषित तत्व स्पैन की तरह बहुत अधिक व्यवहार करते हैं। ऐसा लगता है कि AngularJS कस्टम टैग & विशेषताओं का लाभ लेता है - यह बहुत अधिक निर्भर करता है।

लेकिन, जहां तक ​​मुझे समझ में आया, उस तरह की चीज करना "डेटा-" उपसर्ग के साथ कस्टम एचटीएमएल 5 विशेषताओं के मामले में एक नो-नो था।

तो, मेरा सवाल यह है: क्या अब यह आपके स्वयं के कस्टम तत्व टैग और/या विशेषता नाम बनाने के लिए वर्जित नहीं है? या एक और तरीका डालें, क्या AngularJS गैर मानक क्विर्क पर भरोसा करता है जो वास्तव में HTML5 spec का हिस्सा नहीं हैं, लेकिन वैसे भी काम करने के लिए होता है? क्या Google पर किसी ने html5 spec का एक लंबा खोया गुप्त अध्याय खोजा? या मैं पूरी तरह से कुछ गलत समझ रहा हूँ?

+4

quirks HTML5 spec का एक हिस्सा हैं, इसलिए सभी ब्राउज़रों को उसी तरह से बाहर निकलना चाहिए, जिसका मतलब है कि कोणीय द्वारा उपयोग किए जाने वाले क्रैप एचटीएमएल 5 ब्राउज़र ब्राउज़र में लगातार क्रॉस-ब्राउज़र है। अगर आप मान्य करना चाहते हैं, तो spec का पालन करें। यदि आप सत्यापन करने से कोणीय सुविधाओं के बारे में अधिक परवाह करते हैं, तो कोणीय का उपयोग करें। यदि आप दोनों चाहते हैं, तो कस्टम टैग और अटारी के बजाय कोणीय ड्राइव करने के लिए कक्षाओं या डेटा-अट्रिबियों का उपयोग करें। – dandavis

उत्तर

16

यह मान्य नहीं होगा लेकिन यह प्रस्तुत करेगा।

एचटीएमएल 5 बहुत क्षमा करने के लिए डिज़ाइन किया गया है (एक्सएचटीएमएल के विपरीत)। यह कुछ हद तक है कि "पुराने" एचटीएमएल 5 ब्राउज़र नए तत्वों (साथ ही साथ बुरी तरह से स्वरूपित एचटीएमएल) की अनुमति दे सकते हैं, जो कि पृष्ठ को तोड़ने के बिना अभी तक समर्थन नहीं करता है।

यह निश्चित रूप से कस्टम टैग पेश करने के लिए "शोषण" किया जा सकता है।

कहा जा रहा है - आप इसे HTML4 के साथ भी कर सकते हैं।

टिप्पणियों में उल्लिखित अनुसार: आपके पास data- के साथ सामान्य टैग में किसी विशेषताओं को उपसर्ग करने की क्षमता भी है और यह मान्य होगा।

+6

मैं यह जोड़ूंगा कि यदि आप पृष्ठ को सत्यापित करना चाहते हैं तो आप डेटा के साथ विशेषताओं को पूर्ववत कर सकते हैं- और कस्टम तत्वों का उपयोग करने से बचें, बल्कि कक्षा या विशेषता निर्देशों का उपयोग करने पर भरोसा करते हैं और आप एक पृष्ठ मान्य कर सकते हैं। आखिरकार यदि यह प्रस्तुत करता है/काम करता है तो यह महत्वपूर्ण है। कुछ हद तक प्रासंगिक आईई संगतता http://docs.angularjs.org/guide/ie और एक और एसओ पोस्ट http://stackoverflow.com/questions/16949926/w3c- validation-with-directives-in-angularjs – shaunhusain

+0

@shaunhusain अच्छा बिंदु। – K3N

4

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

4

कोणीयजेएस वास्तव में परवाह नहीं करते हैं, यह पूरी तरह से आपके ऊपर है। यदि आप चाहते हैं कि आपका निर्देश बूढ़े आईई के साथ संगत हो, तो आपको के बजाय <div data-hello-world> का उपयोग करना होगा और डेटा को अपने सभी कस्टम विशेषताओं के सामने रखना होगा।

HTML5 अभी भी 100% मानक नहीं है, लेकिन यह धीरे-धीरे मानक बन रहा है।

+0

आप IEShiv.js फ़ाइल का भी उपयोग कर सकते हैं और आईई को बोर्किंग से रखने के लिए अपने स्वयं के तत्वों के लिए document.createElement ("my-custom-element") करें (लगता है कि यह अभी भी सत्यापन में विफल रहता है लेकिन जिमी क्रैक मकई ...)। https://github.com/angular-ui/angular-ui/tree/master/common/ieshiv – shaunhusain

11
W3C विनिर्देश से

:

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

हालांकि, जबकि पेज शरीर की प्रारंभिक स्रोत (कोणीय प्रक्रियाओं से पहले एक एनजी-ऐप तत्व) W3C मानकों का पालन नहीं हो सकता है, यदि आप निर्देशों में replace: true का उपयोग, कस्टम तत्वों एक टेम्पलेट HTML ने ले ली है, जो वैध हो सकता है। तो, इस मामले में, आप एक कोणीय तत्व के बारे में सोच सकते हैं जैसे कि प्लेसहोल्डर जिसे टर्मिनल HTML आउटपुट के साथ प्रतिस्थापित किया गया है।

+0

समस्या किसी भी कारण से, "प्रतिस्थापन" अब कुछ समय से बहिष्कृत हो गई है। – kboom

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