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