检测给定Javascript对象是否为DOM元素的最佳方法是什么?

时间:2020-03-06 14:35:29  来源:igfitidea点击:

假设我正在编写一个旨在接受多种参数类型的函数:

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

实现is_dom_element以便以跨浏览器,相当准确的方式工作的最佳方法是什么?

解决方案

可能这是这里:

node instanceof HTMLElement

在大多数浏览器中都可以使用。否则,我们必须使用鸭子式输入(例如,typeof x.nodeType!='undefined')

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...
    }
};

关于什么

obj instanceof HTMLElement