前几天同事说数组的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
本文版权归作者和博客园所有,欢迎转载,转载请标明出处。
如果您觉得本篇博文对您有所收获,请点击右下角的 [推荐],谢谢!