检测给定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