兼容低版本IE的JScript5.5實現(xiàn)
更新時間:2006年09月23日 00:00:00 作者:
作者Blog:www.coolcode.cn
IE 5.5 中的 JScript 版本是 5.5 版,它比以前版本的 JScript 中多了如數(shù)組的 push、pop、shift、unshift 方法和 encodeURI、decodeURI 等一些重要的函數(shù)。而這些增加的內(nèi)容在目前其他瀏覽器(如 Moziila/Firefox 和 Opera)上也同樣支持。因此目前開發(fā)網(wǎng)站一般對于 IE 瀏覽器只能兼容到 5.5 版,而對于更低版本的 IE(如 IE 5、IE 4 等),則不再去考慮了。雖然這些低版本的 IE 瀏覽器目前已經(jīng)不是主流,但如果能夠不需要修改現(xiàn)有代碼就能夠兼容它們的話,倒是也可以考慮。因此我做了這個兼容低版本 IE 的 JScript 5.5 實現(xiàn)。當(dāng)然它不可能完全兼容 JScript 5.5,但對于最常用的一些方法,都已經(jīng)實現(xiàn)了。
該庫使用非常簡單,只需要在網(wǎng)頁的 head 部分加入:
<script type="text/javascript" src="iecompat.js"></script>
就可以了。
完全實現(xiàn)的:
Array 對象中:
·push 方法
·pop 方法
·shift 方法
·unshift 方法
·splice 方法
Date 對象中:
·toDateString 方法
·toTimeString 方法
·toLocaleDateString 方法
·toLocaleTimeString 方法
·Function 對象中:
·apply 方法
·call 方法
Global 對象中:
·undefined 屬性
·encodeURI 方法
·encodeURIComponent 方法
·decodeURI 方法
·decodeURIComponent 方法
Number 對象中:
·toExponential 方法
·toFixed 方法
·toPrecision 方法
對于錯誤處理,IE 5(JScript 5)中已經(jīng)有了 try…catch 和 throw 語句,因此 decodeURI、decodeURIComponent、toExponential、toFixed、toPrecision、apply 如果出現(xiàn)運行期錯誤,在 IE 5 上會拋出跟 IE 5.5+ 中一樣的錯誤信息,但是因為 IE 4 沒有錯誤處理語句,如果上述函數(shù)出現(xiàn)運行期錯誤,將會返回 null。注意上面說的運行期錯誤,不是指上述函數(shù)實現(xiàn)中的錯誤,而是指在這些函數(shù)正常工作的情況下應(yīng)該出現(xiàn)的錯誤。
其中 Function 的 apply 函數(shù)的實現(xiàn)參考了:
http://www.openjsan.org/doc/a/ad/adamk/Upgrade/0.04/lib/Upgrade/Function/apply.html
這段程序。
不完全實現(xiàn)的:
Error 對象
Object 對象中:
·isPrototypeOf 方法
·hasOwnProperty 方法
·propertyIsEnumerable 方法
String 對象中:
·toLocaleLowerCase 方法
·toLocaleUpperCase 方法
·localeCompare 方法
因為 IE 4 不具備錯誤處理語句,因此 Error 對象在 IE 4 上并不具備 IE 5 以上 Error 對象應(yīng)具有的功能,因此它對于 IE 4 的實現(xiàn)只能保證你在訪問或創(chuàng)建它時不會出錯。
Object 中的 isPrototypeOf、hasOwnProperty 和 propertyIsEnumerable 方法只是做了模擬實現(xiàn),其返回值并非總是正確。
String 對象中的 toLocaleLowerCase、toLocaleUpperCase 和 localeCompare 方法實際上并沒有考慮本地字符集,但在大部分系統(tǒng)上它還是工作正常的。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
如果你想測試低版本的 IE 瀏覽器上的效果,又沒有安裝低版本的 IE 瀏覽器,可以使用這個包:ie_all.zip 。這里面都是不需要安裝的 IE,直接釋放壓縮包到一個目錄下,就可以運行了。如果你是 win9x 系統(tǒng),可以到 這里 下載 win9x 版的 standalone IE。
IE 5.5 中的 JScript 版本是 5.5 版,它比以前版本的 JScript 中多了如數(shù)組的 push、pop、shift、unshift 方法和 encodeURI、decodeURI 等一些重要的函數(shù)。而這些增加的內(nèi)容在目前其他瀏覽器(如 Moziila/Firefox 和 Opera)上也同樣支持。因此目前開發(fā)網(wǎng)站一般對于 IE 瀏覽器只能兼容到 5.5 版,而對于更低版本的 IE(如 IE 5、IE 4 等),則不再去考慮了。雖然這些低版本的 IE 瀏覽器目前已經(jīng)不是主流,但如果能夠不需要修改現(xiàn)有代碼就能夠兼容它們的話,倒是也可以考慮。因此我做了這個兼容低版本 IE 的 JScript 5.5 實現(xiàn)。當(dāng)然它不可能完全兼容 JScript 5.5,但對于最常用的一些方法,都已經(jīng)實現(xiàn)了。
該庫使用非常簡單,只需要在網(wǎng)頁的 head 部分加入:
<script type="text/javascript" src="iecompat.js"></script>
就可以了。
完全實現(xiàn)的:
Array 對象中:
·push 方法
·pop 方法
·shift 方法
·unshift 方法
·splice 方法
Date 對象中:
·toDateString 方法
·toTimeString 方法
·toLocaleDateString 方法
·toLocaleTimeString 方法
·Function 對象中:
·apply 方法
·call 方法
Global 對象中:
·undefined 屬性
·encodeURI 方法
·encodeURIComponent 方法
·decodeURI 方法
·decodeURIComponent 方法
Number 對象中:
·toExponential 方法
·toFixed 方法
·toPrecision 方法
對于錯誤處理,IE 5(JScript 5)中已經(jīng)有了 try…catch 和 throw 語句,因此 decodeURI、decodeURIComponent、toExponential、toFixed、toPrecision、apply 如果出現(xiàn)運行期錯誤,在 IE 5 上會拋出跟 IE 5.5+ 中一樣的錯誤信息,但是因為 IE 4 沒有錯誤處理語句,如果上述函數(shù)出現(xiàn)運行期錯誤,將會返回 null。注意上面說的運行期錯誤,不是指上述函數(shù)實現(xiàn)中的錯誤,而是指在這些函數(shù)正常工作的情況下應(yīng)該出現(xiàn)的錯誤。
其中 Function 的 apply 函數(shù)的實現(xiàn)參考了:
http://www.openjsan.org/doc/a/ad/adamk/Upgrade/0.04/lib/Upgrade/Function/apply.html
這段程序。
不完全實現(xiàn)的:
Error 對象
Object 對象中:
·isPrototypeOf 方法
·hasOwnProperty 方法
·propertyIsEnumerable 方法
String 對象中:
·toLocaleLowerCase 方法
·toLocaleUpperCase 方法
·localeCompare 方法
因為 IE 4 不具備錯誤處理語句,因此 Error 對象在 IE 4 上并不具備 IE 5 以上 Error 對象應(yīng)具有的功能,因此它對于 IE 4 的實現(xiàn)只能保證你在訪問或創(chuàng)建它時不會出錯。
Object 中的 isPrototypeOf、hasOwnProperty 和 propertyIsEnumerable 方法只是做了模擬實現(xiàn),其返回值并非總是正確。
String 對象中的 toLocaleLowerCase、toLocaleUpperCase 和 localeCompare 方法實際上并沒有考慮本地字符集,但在大部分系統(tǒng)上它還是工作正常的。
完全沒有實現(xiàn)的:
正則表達(dá)式對象中擴(kuò)充的屬性和限定符
下載: iecompat.js
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
如果你想測試低版本的 IE 瀏覽器上的效果,又沒有安裝低版本的 IE 瀏覽器,可以使用這個包:ie_all.zip 。這里面都是不需要安裝的 IE,直接釋放壓縮包到一個目錄下,就可以運行了。如果你是 win9x 系統(tǒng),可以到 這里 下載 win9x 版的 standalone IE。
相關(guān)文章
詳解extract-text-webpack-plugin 的使用及安裝
這篇文章主要介紹了詳解extract-text-webpack-plugin 的使用及安裝,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06js構(gòu)造函數(shù)創(chuàng)建對象是否加new問題
本篇文章主要給大家詳細(xì)分析了js構(gòu)造函數(shù)創(chuàng)建對象加new與不加new的問題,有這方面興趣的參考學(xué)習(xí)下。2018-01-01不間斷滾動JS打包類,基本可以實現(xiàn)所有的滾動效果,太強(qiáng)了
不間斷滾動JS打包類,基本可以實現(xiàn)所有的滾動效果,太強(qiáng)了...2007-12-12JavaScript面向?qū)ο髮崿F(xiàn)放大鏡案例
這篇文章主要為大家詳細(xì)介紹了JavaScript面向?qū)ο髮崿F(xiàn)放大鏡案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10