Является ли 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