IE8及以下瀏覽器偽數組slice方法兼容處理


前幾天同事說數組的slice方法在IE8下有兼容問題,我查閱了MDN,文檔里面有提到IE8及以下瀏覽器中,DOM對象組成的偽數組通過call調用slice方法沒有遵循標准行為

我做了個demo在IE8上做了測試

<div>古</div>
<div>德</div>
<div>God</div>

<script>

var dom = document.getElementsByTagName("div");
console.log( Array.prototype.slice.call( dom,1 ) )
    
</script>

結果如圖

提示dom不是js對象,在ie9+瀏覽器無此問題。MDN官方文檔還給出了一坨代碼的解決方案,我這里有種方便快捷的方法可以解決問題。既然說dom不是js對象,把它轉化成對象不就完了嗎,於是我把代碼做了如下改造:

<div>古</div>
<div>德</div>
<div>God</div>

<script>

var dom = document.getElementsByTagName("div");
console.log( Array.prototype.concat.apply([],dom).slice(1) )
    
</script>

 

兼容問題就這樣愉快地解決了~

作者:古德God
出處:http://www.cnblogs.com/wangmeijian
本文版權歸作者和博客園所有,歡迎轉載,轉載請標明出處。
如果您覺得本篇博文對您有所收獲,請點擊右下角的 [推薦],謝謝!


免責聲明!

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



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