Является ли Element.tagName всегда заглавным?

Чтение в MDN о Element.tagName в нем указано:

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

Мой вопрос: это доверчиво? Действительно ли IE (старый и современный) ведет себя так, как ожидалось? Возможно, это изменится? или лучше всегда работать с el.tagName.toLowerCase()?

Ответы

Ответ 1

Вам не нужно toLowerCase или что-то еще, браузеры делают то же самое в этой точке (удивительно, да?).

О логике, когда я имел дело с коллегой, очень профессиональным по стандартам W3C. Один из них, если его мнение заключается в том, что использование верхнего регистра TAGNAME было бы намного легче распознать их из пользовательского контента. Это довольно убедительно для меня.


edit: Как говорят некоторые, xhtml doctype возвращает нижнее регистрационное имя тега, я делал тесты - результатом является UPPERCASE. И, кстати, XHTML - это HTML-стиль HTML, он все еще HTML, а не XML.

Технически, пожалуйста, прочитайте эту спецификацию для получения дополнительной информации: http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-745549614

Обратите внимание, что это (tagName) сохраняется в XML, как и все операции DOM. HTML DOM возвращает tagName элемента HTML в канонической форме в верхнем регистре, независимо от случая в исходном HTML-документе.

По вопросу опроса: это доверчиво. Нарушение изменений вряд ли произойдет в спецификации HTML.

Ответ 2

В WebKit/Chromium он не является надежным, WebKit может создавать свойства tagName также в нижнем регистре, большинство веб-страниц строит в верхнем регистре tagName, но также можно строить строчные значения, поэтому, если вы используете WebKit, вы должны быть готовы к поддержке оба случая. Я думал, что tagName всегда прописными буквами (большинство из них), и я вижу, что я ошибся, теперь я должен немного исправить свой script:)

снимок экрана chrome здесь

EDIT: console.log

Ответ 3

Работайте с element.tagName.toLowerCase(), если ваш код требует вывода в нижнем регистре. Если стандарты изменятся в будущем на нижний регистр, тогда вы не получите другое значение в своем выпуске, так как в любом случае оно отформатировано в нижнем регистре.

Наоборот, если вы оставите его без toLowerCase(), то ваш код может измениться, если стандарты будут изменены для вывода в виде нижнего регистра.

Я сомневаюсь, что стандарт изменится для этого. Это полностью зависит от ваших потребностей.

Ответ 4

tagName и nodeName входят в строчные или регистрозависимые данные, если страница заголовков ответов имеет заголовок Content-type: application/xhtml+xml; или любой тип содержимого, связанного с xhtml. например document.documentElement.nodeName возвращает html Прочтите это для других случаев: https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-745549614