javascript判斷對象是否為domElement


我們在寫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 || obj.nodeType === 9) && typeof obj.nodeName === 'string';
}
</script>

 

改寫

function isElement(obj){
return (typeof HTMLElement === 'object') 
?(obj instanceof HTMLElement)
:!!(obj && typeof obj === 'object' && (obj.nodeType === 1 || obj.nodeType === 9) && typeof obj.nodeName === 'string');
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM