前幾天同事說數組的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
本文版權歸作者和博客園所有,歡迎轉載,轉載請標明出處。
如果您覺得本篇博文對您有所收獲,請點擊右下角的 [推薦],謝謝!