欢迎来到福编程网,本站提供各种互联网专业知识!

兼容低版本IE的JScript5.5实现

发布时间:2006-09-23 作者: 来源:转载
作者Blog:www.coolcode.cnIE5.5中的JScript版本是5.5版,它比以前版本的JScript中多了如数组的push、pop、shift、unshift方法和encodeURI、decodeURI等一些重要的函数。而这些增加的内容在目前其他浏览器(如Moziila/Firefox和Opera)上也同样支持。因此目前
作者Blog:www.coolcode.cn

IE5.5中的JScript版本是5.5版,它比以前版本的JScript中多了如数组的push、pop、shift、unshift方法和encodeURI、decodeURI等一些重要的函数。而这些增加的内容在目前其他浏览器(如Moziila/Firefox和Opera)上也同样支持。因此目前开发网站一般对于IE浏览器只能兼容到5.5版,而对于更低版本的IE(如IE5、IE4等),则不再去考虑了。虽然这些低版本的IE浏览器目前已经不是主流,但如果能够不需要修改现有代码就能够兼容它们的话,倒是也可以考虑。因此我做了这个兼容低版本IE的JScript5.5实现。当然它不可能完全兼容JScript5.5,但对于最常用的一些方法,都已经实现了。

该库使用非常简单,只需要在网页的head部分加入:


就可以了。

完全实现的:

Array对象中:

·push方法
·pop方法
·shift方法
·unshift方法
·splice方法

Date对象中:

·toDateString方法
·toTimeString方法
·toLocaleDateString方法
·toLocaleTimeString方法
·Function对象中:
·apply方法
·call方法

Global对象中:

·undefined属性
·encodeURI方法
·encodeURIComponent方法
·decodeURI方法
·decodeURIComponent方法

Number对象中:

·toExponential方法
·toFixed方法
·toPrecision方法

对于错误处理,IE5(JScript5)中已经有了try…catch和throw语句,因此decodeURI、decodeURIComponent、toExponential、toFixed、toPrecision、apply如果出现运行期错误,在IE5上会抛出跟IE5.5+中一样的错误信息,但是因为IE4没有错误处理语句,如果上述函数出现运行期错误,将会返回null。注意上面说的运行期错误,不是指上述函数实现中的错误,而是指在这些函数正常工作的情况下应该出现的错误。

其中Function的apply函数的实现参考了:
http://www.openjsan.org/doc/a/ad/adamk/Upgrade/0.04/lib/Upgrade/Function/apply.html
这段程序。

不完全实现的:

Error对象

Object对象中:

·isPrototypeOf方法
·hasOwnProperty方法
·propertyIsEnumerable方法

String对象中:

·toLocaleLowerCase方法
·toLocaleUpperCase方法
·localeCompare方法

因为IE4不具备错误处理语句,因此Error对象在IE4上并不具备IE5以上Error对象应具有的功能,因此它对于IE4的实现只能保证你在访问或创建它时不会出错。

Object中的isPrototypeOf、hasOwnProperty和propertyIsEnumerable方法只是做了模拟实现,其返回值并非总是正确。

String对象中的toLocaleLowerCase、toLocaleUpperCase和localeCompare方法实际上并没有考虑本地字符集,但在大部分系统上它还是工作正常的。

完全没有实现的:

正则表达式对象中扩充的属性和限定符

下载: iecompat.js

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
如果你想测试低版本的 IE 浏览器上的效果,又没有安装低版本的 IE 浏览器,可以使用这个包:ie_all.zip。这里面都是不需要安装的 IE,直接释放压缩包到一个目录下,就可以运行了。如果你是 win9x 系统,可以到 这里下载 win9x 版的 standalone IE。

相关推荐