Ajax-------IE和FIREFOX 指令碼的一些區別
用AJAX開發 不可避免的要遇到瀏覽器不同,實現不同的問題,下面是AoiUmi的一些總結。
1:innerText
IE支援,FIREFOX不支援
解決辦法:用innerHTML,2種瀏覽器都識別innerHTML
2:document.createElement
document.appendChild
在往表裡插入行時
FIREFOX支援,IE不支援
解決辦法:把行插入到TBODY中,不要直接插入到表
3:setAttribute('style','color:red;')
FIREFOX支援(除了IE,現在所有瀏覽器都支援),IE不支援
解決辦法:不用setAttribute('style','color:red')
而用object.style.cssText = 'color:red;'(這寫法也有例外)
最好的辦法是上面種方法都用上,萬無一失 ^_^
4:class
setAttribute('class','styleClass')
FIREFOX支援,IE不支援(指定屬性名稱為CLASS,IE不會設定元素的CLASS屬性,相反只使用SETATTRIBUTE時IE自動識別CLASSNAME屬性)
解決辦法:
setAttribute('class','styleClass')
setAttribute('className','styleClass')
2種都用上
5:用setAttribute設定事件
var obj = document.getElementById('objId');
obj.setAttribute('onclick','funcitonname();');
FIREFOX支援,IE不支援
解決辦法:
IE中必須用點記法來引用所需的事件處理常式,並且要用賦予匿名函數
如下:
var obj = document.getElementById('objId');
obj.onclick=function(){fucntionname();};
這種方法所有瀏覽器都支援
6:建立單選鈕
IE以外的瀏覽器
var rdo = document.createElement('input');
rdo.setAttribute('type','radio');
rdo.setAttribute('name','radiobtn');
rdo.setAttribute('value','checked');
IE:
var rdo =document.createElement("<input type='radio' name='radiobtn' value='checked'>";
解決辦法:
這一點區別和前面的都不一樣。這次完全不同,所以找不到共同的辦法來解決,那麼只有IF-ELSE了
萬幸的是,IE可以識別出document的uniqueID屬性,別的瀏覽器都不可以識別出這一屬性。問題解決。
0:共同的一些技巧
在動態建立INPUT型輸入元素時,一般是先加入,在設定TYPE。這就有可能出錯
好習慣:var btn = document.createElement('input');
btn.setAttribut('type','button');
document.getElementById('formId').appendChild(btn);