这可能很有趣:
function isElement(obj) { try { //Using W3 DOM2 (works for FF, Opera and Chrome) return obj instanceof HTMLElement; } catch(e){ //Browsers not supporting W3 DOM2 don't have HTMLElement and //an exception is thrown and we end up here. Testing some //properties that all elements have (works on IE7) return (typeof obj==="object") && (obj.nodeType===1) && (typeof obj.style === "object") && (typeof obj.ownerdocument ==="object"); }}它是DOM Level2的一部分。
更新2
:这是我在自己的库中实现它的方式:(以前的代码在Chrome中不起作用,因为Node和HTMLElement是函数而不是预期的对象。此代码已在FF3,IE7,Chrome1和Opera中进行了测试9)。
//Returns true if it is a DOM nodefunction isNode(o){ return ( typeof Node === "object" ? o instanceof Node : o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName==="string" );}//Returns true if it is a DOM element function isElement(o){ return ( typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2 o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName==="string");}


