Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   tagName upperCase (https://javascript.ru/forum/misc/5189-tagname-uppercase.html)

Riim 24.09.2009 13:20

tagName upperCase
 
Свойство элементов tagName содержит имя в верхнем регистре. Верхний регистр описан где-то в стандартах? Если нет, то насколько безопасна запись:
elem.tagName == 'DIV'

по сравнению с:
elem.tagName.toUpperCase() == 'DIV'

?

Riim 24.09.2009 13:34

Что-то вроде нашел:

http://www.w3.org/TR/2000/WD-DOM-Lev...-one-core.html
Цитата:

tagName has the value "elementExample". Note that this is case-preserving in XML, as are all of the operations of the DOM. The HTML DOM returns the tagName of an HTML element in the canonical uppercase form, regardless of the case in the source HTML document.

http://www.w3.org/TR/2000/CR-DOM-Lev...0307/html.html
Цитата:

The element type names exposed through a property are in uppercase. For example, the body element type name is exposed through the "tagName" property as "BODY".

Все же непонятно, почему часто переводят в какой-то конкретный регистр. В том же PrototypeJs и MooTools вовсю так делают.

Octane 24.09.2009 14:26

Интересно, зачем вообще tagName для xml, есть же nodeName.

Riim 24.09.2009 14:42

Цитата:

Сообщение от Octane
Интересно, зачем вообще tagName для xml, есть же nodeName.

да, есть такое:
Цитата:

nodeName contains all functionalities of tagName, plus a few more. Therefore nodeName is always the better choice.
но это только если его применять к nodeType != 1 , если я точно знаю, что в переменной именно элемент, то tagName === nodeName.

e1f 24.09.2009 14:48

Вроде бы ИЕ не всегда хранит tagName в uppercase, ЕМНИП.

Riim 24.09.2009 15:13

e1f, а какая версия IE? Если ниже 6-ой, то можно забыть.

e1f 24.09.2009 15:18

А вот это вопрос, надо гуглить :)

x-yuri 26.09.2009 13:12

в общем-то jquery и mootools не рассчитывают на верхний регистр. Но ведь они и могут в разных документах использоваться с разными DOCTYPE или без

Octane 30.09.2009 13:24

Решил попробовать, как ведут себя скрипты, когда контент отдается, как application/xhtml+xml. tagName и nodeName, как и ожидалось, начинают возвращать имена в том регистре, в котором они записаны в xhtml-коде. innerHTML и innerText (textContent) остаются работоспособными.


Увидел в документации вот что:
For example, in JavaScript you might do something like:

    ...
    var name=node.name().toLowerCase;
    if ( name == 'table' ) {
       ...
    }

Ошибка? У меня нигде не заработало. Конечно можно сделать, чтобы эта штука заработала, но сомневаюсь что в примере на это расчитывали.

p.s. а IE8 оказывается так и не научился воспринимать application/xhtml+xml, предлагает скачать файл :(

B~Vladi 30.09.2009 18:04

Странно, что для HTML браузеры по-разному "видят" имена тегов, когда для XML все возвращяют тег, в том регистре, в котором он записан (создан(?)).


Часовой пояс GMT +3, время: 15:58.