Какой лучший способ определить, является ли данный объект Javascript элементом DOM?

Скажем, например, я писал функцию, предназначенную для приема нескольких типов аргументов:

var overloaded = function (arg) {
    if (is_dom_element(arg)) {
        // Code for DOM Element argument...
    }
};

Какой лучший способ реализовать is_dom_element, чтобы он работал в кросс-браузере, довольно точным способом?

Ответ 1

jQuery проверяет свойство nodeType. Таким образом, у вас будет:

var overloaded = function (arg) {
    if (arg.nodeType) {
        // Code for DOM Element argument...
    }
};

Хотя это обнаружит все объекты DOM, а не только элементы. Если вам нужны только элементы, это будет:

var overloaded = function (arg) {
    if (arg.nodeType && arg.nodeType == 1) {
        // Code for DOM Element argument...
    }
};

Ответ 2

Возможно, это здесь:

node instanceof HTMLElement

Это должно работать в большинстве браузеров. В противном случае вам придется уткать (например, typeof x.nodeType != 'undefined')

Ответ 3

Что насчет

obj instanceof HTMLElement