編寫兼容IE和FireFox的腳本
更新時間:2009年05月18日 15:42:08 作者:
編寫兼容IE和FireFox的腳本確定的件很煩人的事,今日又經(jīng)歷了一次。
一、正式表達式問題
試圖用以下表達式提取中括號“]”后面的內(nèi)容,連接調(diào)用以下代碼在IE下正常,F(xiàn)ireFox則總是會用單數(shù)行的內(nèi)容替代雙數(shù)行的內(nèi)容。
(/(\])([^ -}]*)/ig).exec(srcText);
newtext = "[部門]" + RegExp.$2;
后證實問題出在“ig”的“g”上,F(xiàn)ireFox把RegExp當全局變量來處理,且沒有及時更新$2,這種問題實在莫名其妙。
二、移除Select的條目
IE支持select.options.remove(index),F(xiàn)ireFox卻是select.remove(index),兼容的方法是select.options[i] = null;
三、showModalDialog
FireFox可以showModalDialog的了,不過如果showModalDialog出來的頁面套了個frame,frame的頁面取window.dialogArguments可以成功,F(xiàn)ireFox不行,要用window.parent.dialogArguments來取。
四、childNodes
FF沒有children,要兼容用childNodes,但IE和FF解釋不一致,F(xiàn)F將空白文本、換行當成節(jié)點,為避免childNodes(index)取得的節(jié)點正確,HTML標識間不要有空格或換行 。
五、removeChild
FF中不能和node.removeNode(true),改為node.parentNode.removeChild(node)。
六、outerHTML
FF沒有node.outerHTML,在調(diào)用node.parentNode.innerHTML來特別處理,若只是添加事件響應(yīng)或設(shè)屬性值,可直接element.onclick = function(){callxxx(x,y);}
七、script域問題
此問題原因不詳,F(xiàn)F用<script type="text/javascript" src="inc/lib.js"></script>調(diào)用外部JS,在內(nèi)部script中調(diào)用lib.js中的函數(shù)時,報告函數(shù)未定義,IE則無此問題。
試圖用以下表達式提取中括號“]”后面的內(nèi)容,連接調(diào)用以下代碼在IE下正常,F(xiàn)ireFox則總是會用單數(shù)行的內(nèi)容替代雙數(shù)行的內(nèi)容。
(/(\])([^ -}]*)/ig).exec(srcText);
newtext = "[部門]" + RegExp.$2;
后證實問題出在“ig”的“g”上,F(xiàn)ireFox把RegExp當全局變量來處理,且沒有及時更新$2,這種問題實在莫名其妙。
二、移除Select的條目
IE支持select.options.remove(index),F(xiàn)ireFox卻是select.remove(index),兼容的方法是select.options[i] = null;
三、showModalDialog
FireFox可以showModalDialog的了,不過如果showModalDialog出來的頁面套了個frame,frame的頁面取window.dialogArguments可以成功,F(xiàn)ireFox不行,要用window.parent.dialogArguments來取。
四、childNodes
FF沒有children,要兼容用childNodes,但IE和FF解釋不一致,F(xiàn)F將空白文本、換行當成節(jié)點,為避免childNodes(index)取得的節(jié)點正確,HTML標識間不要有空格或換行 。
五、removeChild
FF中不能和node.removeNode(true),改為node.parentNode.removeChild(node)。
六、outerHTML
FF沒有node.outerHTML,在調(diào)用node.parentNode.innerHTML來特別處理,若只是添加事件響應(yīng)或設(shè)屬性值,可直接element.onclick = function(){callxxx(x,y);}
七、script域問題
此問題原因不詳,F(xiàn)F用<script type="text/javascript" src="inc/lib.js"></script>調(diào)用外部JS,在內(nèi)部script中調(diào)用lib.js中的函數(shù)時,報告函數(shù)未定義,IE則無此問題。
相關(guān)文章
Javascript動手實現(xiàn)call,bind,apply的代碼詳解
這篇文章主要為大家詳細介紹了Javascript動手實現(xiàn)call,bind,apply的代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02微信小程序數(shù)據(jù)統(tǒng)計和錯誤統(tǒng)計的實現(xiàn)方法
這篇文章主要介紹了微信小程序數(shù)據(jù)統(tǒng)計和錯誤統(tǒng)計的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06JavaScript循環(huán)遍歷的24個方法,你都知道嗎
這篇文章主要給大家介紹了關(guān)于JavaScript循環(huán)遍歷的24個方法,文中對每種方法都給出了詳細的實例代碼,方便大家理解學(xué)習(xí),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2021-09-09JavaScript操作 url 中 search 部分方法函數(shù)
這篇文章主要介紹了JavaScript操作 url 中 search 部分方法函數(shù)的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06JavaScript或jQuery 獲取option value值方法解析
這篇文章主要介紹了JavaScript或jQuery 獲取option value值方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05Javacript實現(xiàn)顏色梯度變化和漸變的效果代碼
用js對導(dǎo)航欄的顏色做了梯度的變化處理,通過處理..獲取兩種顏色在變化時的各種顏色字符串,并且字符串的個數(shù),即獲取的頻率可以調(diào)節(jié)2013-05-05一文帶你掌握JavaScript中Moment.js如何操作日期和時間
Moment.js是一個極其強大的JavaScript庫,專門用于解析、驗證、操作和顯示日期和時間,下面就跟隨小編一起學(xué)習(xí)一下Moment.js的具體使用吧2024-01-01