class
является одним из так называемых глобальных атрибутов (вместе с глобальными событиями). Они должны будут применяться к каждому элементу в DOM, независимо от его природы.
Я полагаю, это связано с API. Спецификация определяет каждый HTML-элемент DOM для наследования от базового интерфейса с именем HTMLElement
, который определяет вышеупомянутые глобальные атрибуты и события. А именно:
interface HTMLElement : Element {
// ...
// metadata attributes
attribute DOMString id;
attribute DOMString title;
attribute DOMString lang;
attribute DOMString dir;
attribute DOMString className;
readonly attribute DOMTokenList classList;
readonly attribute DOMStringMap dataset;
С учетом вышесказанного, редактор (и) спецификации сделал следующее примечание в конце списка глобальных атрибутов / событий:
Примечание. Хотя эти атрибуты применяются ко всем элементам, они полезны не для всех элементов. Например, только медиаэлементы когда-либо получат событие volumechange
, инициированное пользовательским агентом.
Итак, я полагаю, они не ожидают от вас этого, но они не могут придумать причину, чтобы это позволить, или , а не , чтобы это позволить. Это только часть API (то есть HTMLHeadElement
равно HTMLElement
в любом случае).