首頁  >  文章  >  web前端  >  如何判斷一個js物件是否一個dom對象

如何判斷一個js物件是否一個dom對象

高洛峰
高洛峰原創
2016-12-05 14:32:211366瀏覽

我們在寫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 === &#39;object&#39; ) ?
        function(obj){
          return obj instanceof HTMLElement;
        } :
        function(obj){
          return obj && typeof obj === &#39;object&#39; && obj.nodeType === 1 && typeof obj.nodeName === &#39;string&#39;;
        }
  </script>

   


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn