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。