Jest kilka rzeczy na temat innych odpowiedzi, które są albo źle sformułowane, albo być może trochę niepoprawne.
FALSE (ish): niestandardowe elementy HTML są „niedozwolone”, „nielegalne” lub „nieprawidłowe”.
Niekoniecznie. Są „niezgodne” . Co za różnica? Coś może „nie pasować” i nadal być „dozwolone”. W3C nie wyśle policji HTML do twojego domu i cię nie odciągnie.
W3C zostawił to w ten sposób z jakiegoś powodu. Zgodność i specyfikacje są określone przez społeczność. Jeśli zdarzy się, że masz mniejszą społeczność używającą HTML do bardziej konkretnych celów i wszyscy zgadzają się co do niektórych nowych elementów, które muszą im ułatwić, mogą mieć coś, co W3C nazywa „innymi stosownymi specyfikacjami” . (jest to oczywiście rażące uproszczenie, ale masz pomysł)
To powiedziawszy, ścisłe weryfikatory zadeklarują niestandardowe elementy jako „nieprawidłowe”. ale dzieje się tak, ponieważ zadaniem walidatora jest zapewnienie zgodności z dowolną specyfikacją, dla której się sprawdza, a nie zapewnienie „legalności” przeglądarki lub użytkowania .
FAŁSZ (owski): Niestandardowe elementy HTML będzie powodować problemy renderowania
Możliwe, ale mało prawdopodobne. (zamień „will” na „może”) Jedynym sposobem, w jaki powinien to spowodować problem z renderowaniem, jest konflikt elementu niestandardowego z inną specyfikacją, taką jak zmiana specyfikacji HTML lub inna specyfikacja uznawana w tym samym systemie (np. SVG, matematyka lub coś niestandardowego).
W rzeczywistości CSS może stylizować niestandardowe tagi, ponieważ specyfikacja HTML wyraźnie stwierdza, że:
Programy klienckie muszą traktować elementy i atrybuty, których nie rozumieją, jako semantycznie neutralne; pozostawiając je w DOM (dla procesorów DOM) i projektując je zgodnie z CSS (dla procesorów CSS), ale nie wywodząc z nich żadnego znaczenia
Uwaga: jeśli chcesz użyć niestandardowego tagu, pamiętaj, że zmiana specyfikacji HTML w późniejszym czasie może wysadzić twój styl, więc bądź przygotowany. <imsocool>
Jednak jest bardzo mało prawdopodobne, aby W3C zaimplementował tag.
Niestandardowe tagi i JavaScript (przez DOM)
Powodem, dla którego możesz uzyskiwać dostęp i zmieniać niestandardowe elementy za pomocą JavaScript, jest to, że specyfikacja mówi nawet o tym, jak powinny być obsługiwane w DOM , który jest (naprawdę okropnym) API, który pozwala manipulować elementami na twojej stronie.
Interfejs HTMLUnknownElement musi być używany w przypadku elementów HTML, które nie są zdefiniowane w tej specyfikacji (lub innych odpowiednich specyfikacjach).
TL; DR: Zgodność ze specyfikacją odbywa się w celu komunikacji i bezpieczeństwa. Niezgodność jest nadal dozwolona przez wszystko oprócz walidatora , którego jedynym celem jest wymuszanie zgodności, ale którego użycie jest opcjonalne.
Na przykład:
var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]
(Jestem pewien, że to przyciągnie płomienie, ale są moje 2 centy)