Почему свойство.tagName DOM возвращает значение в верхнем регистре?

Например, если у нас есть

<html>
    <head>
        <title>FooBar</title>
    </head>
    <body></body>
</html>

Если мы делаем document.getElementByTagName("title").TagNameтогда у нас будет TITLE (верхний регистр). В то время как стандарты HTML рекомендует писать теги HTML в нижнем регистре.

Я знаю, что между ними нет никакой связи, но это все равно не имеет смысла.

Есть ли причина, по которой DOM должен возвращать имена тегов в верхнем регистре?

1 ответ

Решение

Технически, это необходимо в DOM Level 1:

HTML DOM возвращает tagName HTML-элемента в канонической заглавной форме, независимо от регистра в исходном HTML-документе.

Соглашение об именах тегов в верхнем регистре, вероятно, вытекает из прежней версии, когда HTML ранее разрабатывался на основе SGML, а типы элементов были объявлены в верхнем регистре. См. Этот раздел спецификации HTML 4.01, в котором обсуждаются SGML, HTML и его синтаксис, а также, например, определение строгого типа документа HTML 4.01. Любые реализации DOM, поддерживающие HTML, будут следовать этому примеру.

Обратите внимание, что строчные имена тегов требуются только явно в XHTML (но не в XML), и авторам обычно рекомендуется писать строчные теги для облегчения переноса между HTML/XHTML, а также для улучшения читабельности. Тем не менее, эта рекомендация не встречается в спецификации; все, что он говорит, - то, что имена тега нечувствительны к регистру только в HTML в противоположность XHTML и XML.

Другие вопросы по тегам