如何在IE中访问节点类型常量

时间:2009-09-18 13:47:53

标签: javascript dom

我有一个节点,我注意到它是一个元素(来自调用node.previousSibling)。但是,我无法找到跨浏览器的JavaScript方式来访问Node constants上显示的MDC

在所有浏览器中,但定义了IE Node.ELEMENT_NODE。我尝试使用节点的特定实例,例如:

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

这在IE中也不起作用。那么IE的方式是什么呢?我是否只需要自己定义节点常量?

3 个答案:

答案 0 :(得分:6)

Internet Explorer 8及更早版本不定义节点类型常量,因此您必须自己定义它们。此外,Internet Explorer 7及更早版本仅support types 1 and 3

答案 1 :(得分:1)

定义节点常量[当它们不存在时]最简洁的方法是捕获尝试访问它们时生成的异常。

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不是预期值。

答案 2 :(得分:0)

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

等...