我們在寫js程式碼時有時需要判斷某個對像是不是DOM對象,然後再進行後續的操作,這裡我給出一種兼容各大瀏覽器,同時又算是比較穩妥的一種方法。
要判斷一個物件是否DOM對象,首先想到的無非就是它是否具有DOM對象的各種屬性或特徵,例如是否有nodeType屬性,有tagName屬性,等等。判斷的特徵越多,也越可靠,因為畢竟我們自訂的js物件也可以有那些屬性。還有其他方法嗎?
在DOM Level2標準中定義了一個HTMLElement對象,它規定所有的DOM對像都是HTMLElement的實例,所以我們可以利用這點來判斷一個對像是不是DOM對象:如果該對像是HTMLElement的實例,則它肯定是一個DOM物件。在不支援HTMLElement的瀏覽器中我們還是使用特徵檢測法。
<script type="text/javascript"> //首先要对HTMLElement进行类型检查,因为即使在支持HTMLElement //的浏览器中,类型却是有差别的,在Chrome,Opera中HTMLElement的 //类型为function,此时就不能用它来判断了 var isDOM = ( typeof HTMLElement === 'object' ) ? function(obj){ return obj instanceof HTMLElement; } : function(obj){ return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string'; } </script>