超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

js腳本:ie和firefox的兼容

admin
2013年7月5日 8:12 本文熱度 5434
1、Select列表控件

刪除列表項。在IE下工作正常的代碼:


obj.options.remove(i);

需要修改為:



obj.remove(i);

添加列表項。在IE下工作正常的代碼:



var oOption = document.createElement('option');
oOption.text = text;
oOption.value = value;
targetArea.options.add(oOption);

為了提供更好的瀏覽器兼容性,更符合W3C DOM Level 2 HTML標(biāo)準(zhǔn),建議改為如下代碼:



var oOption = document.createElement('option');
oOption.text = text;
oOption.value = value;
targetArea.options[targetArea.options.length]=new Option(text,value);

另外,selectObj.options(i),需要改為selectObj.options[i]。

2、XmlDom對象

IE下一般這樣做:



var xmlDom = new ActiveXObject("Microsoft.XMLDOM");

為了兼容Firefox,需要修改為:



if (window.ActiveXObject){
var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
}
else{
if (document.implementation && document.implementation.createDocument){
var xmlDom = document.implementation.createDocument("","",null);
}
}

3、對于childNodes的循環(huán)處理



var nodes=xmlDom.documentElement;
var sName; //標(biāo)簽文本
var sValue; //標(biāo)簽值

if (nodes.childNodes.length != 0) {
for (var i=0;ioItem = nodes.childNodes.item(i);
sName = oItem.text;
sValue = oItem.getAttribute("id"); // 這里會報錯
addOption(targetArea,sName,sValue);
}
}

上面這段代碼,在IE下完全沒有問題,但是在Firefox下就毫無反應(yīng),F(xiàn)irefox下的錯誤控制臺報告:oItem沒有 getAttribute方法,百思不得其解,經(jīng)調(diào)試,發(fā)現(xiàn)oItem的節(jié)點(diǎn)類型竟然是3,也就是文本,進(jìn)一步調(diào)試得知,oItem的節(jié)點(diǎn)類型分別是3、 1、3、1....(1是節(jié)點(diǎn)對象),使用Firefox的Dom查看器一看,恍然大悟!其中,Xml數(shù)據(jù)字符串為:

驗房服務(wù)
家裝設(shè)計
建筑工程
家裝監(jiān)理
檢測(環(huán)境質(zhì)量)
風(fēng)水

在Dom查看器中看到:

可以看到,#text節(jié)點(diǎn)和節(jié)點(diǎn)對象交替排列(id列有數(shù)據(jù)的為正常節(jié)點(diǎn),例如“驗房服務(wù)”、“家裝設(shè)計”等等),造成當(dāng)oItem為#text類型的時候調(diào)用getAttribute()方法失敗,因為文本節(jié)點(diǎn)沒有此方法。

那么,修改后的代碼是:

var nodes=xmlDom.documentElement;
var sName; //標(biāo)簽文本
var sValue; //標(biāo)簽值
var oItem,sName,sValue,oOption;
if (nodes.childNodes.length != 0) {
for (var i=0;ivar oItem = nodes.childNodes[i];
if(oItem.nodeType == 1){ //判斷是否是Element類型
sName = oItem.childNodes[0].nodeValue; //這里需要注意下
sValue = oItem.getAttribute("id");
var oOption = document.createElement('option');
oOption.text = sName;
oOption.value = sValue;
objType.options.add(oOption);
}
}
}

還有一點(diǎn)需要注意的是oItem.text無法在Firefox中取得節(jié)點(diǎn)的值,取而代之的是:

oItem.childNodes[0].nodeValue;

至此,真相大白!

附錄1:幫助我解決問題的兩篇關(guān)鍵文章:

1、http://www.sitepoint.com/forums/showthread.php?t=307056&goto=nextnewest

2、http://www.thescripts.com/forum/thread471907.html


該文章在 2013/7/5 8:13:58 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved