fix-ie5.js扩展在IE5下不能使用的几个方法

时间:2021-05-28

在IE5下的Javascript:
Array不支持push(),pop();Function不支持apply();String对象的replace方法不支持替换成一个处理函数。
使用下面的代码就可修复上述方法在IE5下无效的问题。


if(/MSIE5.0/.test(navigator.userAgent))newfunction(){

var$$apply=function($function,$object,$arguments){
$function.apply($object,$arguments);
};

//fixString.replace
if(''.replace(/^/,String)){
//preserveString.replace
var_stringReplace=String.prototype.replace;
//createString.replaceforhandlingfunctions
var_functionReplace=function($expression,$replacement){
var$match,$newString="",$string=this;
while($string&&($match=$expression.exec($string))){
$newString+=$string.slice(0,$match.index)+$$apply($replacement,this,$match);
$string=$string.slice($match.lastIndex);
}
return$newString+$string;
};
//replaceString.replace
String.prototype.replace=function($expression,$replacement){
this.replace=(typeof$replacement=="function")?_functionReplace:_stringReplace;
returnthis.replace($expression,$replacement);
};
}

//fixFunction.apply
if(!Function.apply){
varAPPLY="apply-"+Number(newDate);
$$apply=function(f,o,a){
varr;
o[APPLY]=f;
switch(a.length){//deconstructforspeed
case0:r=o[APPLY]();break;
case1:r=o[APPLY](a[0]);break;
case2:r=o[APPLY](a[0],a[1]);break;
case3:r=o[APPLY](a[0],a[1],a[2]);break;
case4:r=o[APPLY](a[0],a[1],a[2],a[3]);break;
default:
varaa=[],i=a.length-1;
doaa[i]="a["+i+"]";while(i--);
eval("r=o[APPLY]("+aa+")");
}
deleteo[APPLY];
returnr;
};
//fixICommon
ICommon.valueOf.prototype.inherit=function(){
return$$apply(arguments.callee.caller.ancestor,this,arguments);
};
}

//arrayfixes
if(![].push)Array.prototype.push=function(){
for(vari=0;i<arguments.length;i++){
this[this.length]=arguments[i];
}
returnthis.length;
};
if(![].pop)Array.prototype.pop=function(){
var$item=this[this.length-1];
this.length--;
return$item;
};
};

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章