兼容低版本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)的:
正則表達式對象中擴充的屬性和限定符
下載: iecompat.js
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
如果你想測試低版本的 IE 瀏覽器上的效果,又沒有安裝低版本的 IE 瀏覽器,可以使用這個包:ie_all.zip 。這里面都是不需要安裝的 IE,直接釋放壓縮包到一個目錄下,就可以運行了。如果你是 win9x 系統(tǒng),可以到 這里 下載 win9x 版的 standalone IE。
相關(guān)文章
JavaScript函數(shù)式編程(Functional Programming)組合函數(shù)(Composition)用法分析
這篇文章主要介紹了JavaScript函數(shù)式編程(Functional Programming)組合函數(shù)(Composition)用法,結(jié)合實例形式分析了javascript函數(shù)式編程中組合函數(shù)的概念、原理、用法及操作注意事項,需要的朋友可以參考下2019-05-05
可能是全網(wǎng)最詳細小程序中使用echarts的教程
在開發(fā)微信小程序時,有需求需要使用到柱狀圖,餅圖等圖表,下面這篇文章主要給大家介紹了關(guān)于小程序中使用echarts的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-10-10
簡述ES6新增關(guān)鍵字let與var的區(qū)別
最近看了很多文章,偶然間看到ES6中新增了一個關(guān)鍵字 let ,它具有與 var 關(guān)鍵字相似的功能。接下來通過本文給大家介紹ES6新增關(guān)鍵字let與var的區(qū)別,需要的朋友可以參考下2019-08-08
在javaScript中檢測數(shù)據(jù)類型的幾種方式小結(jié)
在用javaScript編程的過程中,我們經(jīng)常會遇到這樣一個問題,就是需要檢測一個數(shù)據(jù)或變量的類型,本篇文章主要介紹了在javaScript中檢測數(shù)據(jù)類型的幾種方式小結(jié),有興趣的可以了解一下。2017-03-03

