Diğer cevaplar hakkında ya sadece yanlış yazılmış ya da belki biraz yanlış olan birkaç şey vardır.
YANLIŞ (ish): Standart olmayan HTML öğelerine "izin verilmez", "geçersiz" veya "geçersiz".
Şart değil. Onlar "uygun değil" . Fark ne? Bir şey "uygun değil" ve yine de "izin verilebilir". W3C, HTML polisini evinize göndermeyecek ve sizi götürmeyecektir.
W3C bir sebepten ötürü işleri bu şekilde bıraktı. Uyumluluk ve teknik özellikler bir topluluk tarafından tanımlanır. Daha spesifik amaçlar için HTML tüketen daha küçük bir topluluğunuz varsa ve hepsi işleri kolaylaştırmak için ihtiyaç duydukları bazı yeni Öğeler üzerinde anlaşırsa, W3C'nin "diğer geçerli spesifikasyonlar" olarak ifade ettiği şeye sahip olabilirler . (bu basitleştirme üzerinde bir brüt, tabii ki, ama fikri anladınız)
Bununla birlikte, katı doğrulayıcılar standart dışı öğelerinizi "geçersiz" olarak ilan edeceklerdir. ancak bunun nedeni, doğrulayıcının işi, tarayıcı için veya kullanım için "yasallık" sağlamak değil, doğruladığı özelliklere uygunluğu sağlamaktır .
YANLIŞ (imsi): Standart dışı HTML öğeleri olacaktır oluşturma sorunlarından neden
Muhtemelen, ama olası değil. ("will" ifadesini "might" ile değiştirin) Bunun bir oluşturma sorunuyla sonuçlanmasının tek yolu, özel öğenizin HTML spesifikasyonundaki bir değişiklik veya aynı sistem içinde onurlandırılan başka bir spesifikasyon (örneğin, SVG, Math veya özel bir şey).
Aslında, CSS'nin standart olmayan etiketleri biçimlendirebilmesinin nedeni, HTML spesifikasyonunun açıkça şunu belirtmesidir:
Kullanıcı aracıları anlamsal olarak nötr olarak anlamadıkları öğelere ve niteliklere davranmalıdır; bunları DOM'da bırakma (DOM işlemcileri için) ve CSS'ye (CSS işlemcileri için) göre şekillendirme, ancak bunlardan herhangi bir anlam çıkarmama
Not: Özel bir etiket kullanmak istiyorsanız, HTML spesifikasyonunda daha sonra bir değişikliğin stilinizi havaya uçurabileceğini unutmayın, bu yüzden hazırlıklı olun. Ancak W3C'nin <imsocool>
etiketi uygulaması pek olası değildir .
Standart olmayan etiketler ve JavaScript (DOM aracılığıyla)
JavaScript kullanarak özel öğelere erişmenin ve değiştirmenin nedeni, spesifikasyonun DOM'da nasıl ele alınması gerektiği hakkında konuşmasıdır , bu da sayfanızdaki öğeleri değiştirmenizi sağlayan (gerçekten korkunç) API'dir.
HTMLUnknownElement arabirimi, bu belirtim (veya diğer geçerli belirtimler) tarafından tanımlanmayan HTML öğeleri için kullanılmalıdır.
TL; DR: Spesifikasyona uygunluk, iletişim ve güvenlik amacıyla yapılır. Tek amacı uygunluğu uygulamak olan ancak kullanımı isteğe bağlı olan bir validator dışında her şeye uyulmamaya hala izin verilmektedir .
Örneğin:
var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]
(Eminim bu alevler çekecektir, ama benim 2 sentim var)