Как получить доступ к константам типа узла в IE - PullRequest
4 голосов
/ 18 сентября 2009

У меня есть узел, который, как я заметил, обязательно является элементом (от вызова node.previousSibling). Однако у меня возникают проблемы с поиском кросс-браузерного способа JavaScript для доступа к константам узла , показанным на MDC .

Во всех браузерах, кроме IE Node.ELEMENT_NODE. Я пытался использовать конкретный экземпляр узла, например ::100100

e=$("#element_id")[0];
alert("ELEMENT_NODE: " + ELEMENT_NODE);

Это также не работает в IE. Так как же IE сделать это? Должен ли я сам определять константы узла?

Ответы [ 3 ]

6 голосов
/ 18 сентября 2009

Internet Explorer 8 и более ранние версии не определяют константы типа узла, поэтому вам придется определять их самостоятельно. Кроме того, Internet Explorer 7 и более ранние версии поддерживают типы 1 и 3 .

1 голос
/ 13 октября 2010

Самый простой способ определить константы узла [когда они не существуют] - перехватить исключение, сгенерированное при попытке доступа к ним.

try {
    if (Node.ELEMENT_NODE != 1) {
        throw true;
    }
}
catch(e) {
    document.Node = Node || {};
    Node.ELEMENT_NODE   = 1;
    Node.ATTRIBUTE_NODE = 2;
    Node.TEXT_NODE      = 3;
}

Строка throw true выполняется только тогда, когда существует Node, но Node.ELEMENT_NODE не является ожидаемым значением.

0 голосов
/ 18 февраля 2011
alert(oNode.nodeType)

и вы получите:

"1" for ELEMENT_NODE  
"2" for ATTRIBUTE_NODE  
"3" for TEXT_NODE   
"4" for CDATA_SECTION_NODE  
"5" for ENTITY_REFERENCE_NODE   
"6" for ENTITY_NODE

и т.д ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...