I have a node that I'm note sure is an element (from calling node.previousSibling). However I am having trouble finding out the cross browser javascript way to access the Node constants shown on the MDC.
In all browsers but IE Node.ELEMENT_NODE is defined. I tried using a specific instance of node, e.g.:
e=$("#element_id")[0];
alert("ELEMENT_NODE: " + ELEMENT_NODE);
This does not work in IE either. So whats the IE way to do this? Do I just have to define the node constants myself?
I have a node that I'm note sure is an element (from calling node.previousSibling). However I am having trouble finding out the cross browser javascript way to access the Node constants shown on the MDC.
In all browsers but IE Node.ELEMENT_NODE is defined. I tried using a specific instance of node, e.g.:
e=$("#element_id")[0];
alert("ELEMENT_NODE: " + ELEMENT_NODE);
This does not work in IE either. So whats the IE way to do this? Do I just have to define the node constants myself?
Share Improve this question asked Sep 18, 2009 at 13:47 Justin DearingJustin Dearing 15k22 gold badges93 silver badges166 bronze badges3 Answers
Reset to default 6Internet Explorer 8 and earlier don't define the node type constants, so you would have to define them yourself. Additionally, Internet Explorer 7 and earlier only support types 1 and 3.
The cleanest way to define the Node Constants [when they don't exist] is by catching the exception generated when attempting to access them.
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;
}
The throw true
line only executes when Node
exists, but Node.ELEMENT_NODE
is not the expected value.
alert(oNode.nodeType)
and you'll get:
"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
etc...