Conseguenze dei tag HTML personalizzati nelle direttive AngularJS

Supponiamo che abbia scritto una direttiva gravatar personalizzata in AngularJS associata a una proprietà di email nell’ambito. La direttiva sostituirà questo HTML …

  

da un tag img comune il cui attributo src è impostato sull’URL Gravatar corretto:

  

La mia domanda potrebbe essere un po ‘ampia o addirittura ingenua, ma “quanto male” è inizialmente avere il nel codice HTML della mia pagina? Ci sono conseguenze “nel mondo reale” oltre a non superare la validazione del W3C?

Il W3C dice

Gli autori non devono utilizzare elementi, attributi o valori di attributi per scopi diversi dal loro scopo semantico inteso in modo appropriato, in quanto ciò impedisce al software di elaborare correttamente la pagina.

e

Gli autori non devono utilizzare elementi, attributi o valori di attributo non consentiti da questa specifica o da altre specifiche applicabili , in quanto ciò rende molto più difficile l’estensione della lingua in futuro.

http://www.w3.org/html/wg/drafts/html/master/dom.html#elements

Gli elementi / gli attributi personalizzati non hanno valore semantico e dovrebbero essere evitati per questi motivi.

Probabilmente non ci saranno conseguenze dirette che nemmeno si noteranno. Dopotutto, Angular utilizza gli attributi ng non confermanti (anche se supportano anche il prefisso dei data- ).

L’unico problema che potresti incontrare è se l’elemento che introduci che è attualmente un elemento personalizzato diventa parte della specifica e ha un comportamento diverso da quello che ti aspettavi prima, ma penso che sia altamente improbabile. Anche così, eviterei di usare qualcosa di personalizzato se potessi.

Alla fine sarai in grado di registrare i tuoi elementi personalizzati , ma da quello che posso dire nessun browser supporta ancora questa specifica.

Mentre la sorgente iniziale del corpo della pagina (prima dei processi angolari di un elemento ng-app) potrebbe non aderire agli standard W3C, se si utilizza “replace: true” nelle direttive, gli elementi personalizzati vengono sostituiti da un modello HTML, che può essere valido . Quindi, in questo caso, puoi pensare a un elemento angular come solo un segnaposto che viene sostituito con l’output HTML del terminale.