0

I need a XB (Cross Browser) method of detecting if an argument is a HTML Element.

Using the following code gives different results in different browsers:

Object.prototype.toString.call(element);
// returns in FF "[object HTMLDivElement]";
// returns in IE "[object Object]";

The other method I found was:

if(element.nodeType)  // true for a HTML Element;

Does someone knows a XB tested solution?

1

1 Answer 1

1

You want this:

if (element.nodeType === element.ELEMENT_NODE)
// Element.prototype.ELEMENT_NODE === 1

if (element.nodeType) is almost always true. For example, the nodeType of a comment is 8, so it would be detected as an element with your code even though it isn't.

Sign up to request clarification or add additional context in comments.

1 Comment

You have to compare against 1 explicitly. Although the symbolic constant Node.ELEMENT_NODE has been defined since the earliest DOM Level 1 Core specs, IE does not provide it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.