现在的位置: 首页 > 综合 > 正文

修复IE(lte 8) ArraySlice 调用在DOM集合时脚本报错的补丁

2013年10月02日 ⁄ 综合 ⁄ 共 576字 ⁄ 字号 评论关闭

ArraySlice不能用在DOM集合中,若加if判断心里则又不爽,故写此脚本以修复之

(function(){
/**
 * fix IE(lte 8) script error of ArraySlice called on HTMLCollection||NodeList
 */
try{Array.prototype.slice.call(document.forms)}catch(_){
	var parseArray=function(obj){
		if(obj instanceof Array)return obj;
		var l=obj.length>>>0,arr=new Array();
		for(var i=0;i<l;i+=1)arr.push(obj[i]);
		return arr;
	};
	var ArraySlice=Array.prototype.slice;
	Array.prototype.slice=function(){
		if(this===window||this===null||this===undefined){
			throw new Error("Array.prototype.slice called on null or undefined");
		}
		return ArraySlice.apply(parseArray(this),arguments);
	}
}
})();

若有高招,欢迎批评!

抱歉!评论已关闭.