1.document.formName.item("itemName") 問題
說明:IE下,可以使用document.formName.item("itemName")或document.formName.elements["elementName"];Firefox下,只能使用document.formName.elements["elementName"].
解決方案:統一使用document.formName.elements["elementName"].
2.集合類對象問題
說明:IE下,可以使用()或[]擷取集合類對象;Firefox下,只能使用[]擷取集合類對象.
解決方案:統一使用[]擷取集合類對象.
3.自訂屬性問題
說明:IE下,可以使用擷取常規屬性的方法來擷取自訂屬性,也可以使用getAttribute()擷取自訂屬性;Firefox下,只能使用getAttribute()擷取自訂屬性.
解決方案:統一通過getAttribute()擷取自訂屬性.
4.eval("idName")問題
說明:IE下,,可以使用eval("idName")或getElementById("idName")來取得id為idName的HTML對象;Firefox下只能使用getElementById("idName")來取得id為idName的HTML對象.
解決方案:統一用getElementById("idName")來取得id為idName的HTML對象.
5.變數名與某HTML對象ID相同的問題
說明:IE下,HTML對象的ID可以作為document的下屬物件變數名直接使用;Firefox下則不能.Firefox下,可以使用與HTML對象ID相同的變數名;IE下則不能。
解決方案:使用document.getElementById("idName")代替document.idName.最好不要取HTML對象ID相同的變數名,以減少錯誤;在聲明變數時,一律加上var,以避免歧義.
6.const問題
說明:Firefox下,可以使用const關鍵字或var關鍵字來定義常量;IE下,只能使用var關鍵字來定義常量.
解決方案:統一使用var關鍵字來定義常量.
7.input.type屬性問題
說明:IE下input.type屬性為唯讀;但是Firefox下input.type屬性為讀寫.
8.window.event問題
說明:window.event只能在IE下運行,而不能在Firefox下運行,這是因為Firefox的event只能在事件發生的現場使用.
解決方案:
IE:
<input name="Button8_1" type="button" value="IE" onclick="javascript:gotoSubmit8_1()"/>
...
<script language="javascript">
function gotoSubmit8_1() {
...
alert(window.event); //use window.event
...
}
</script>
IE&Firefox:
<input name="Button8_2" type="button" value="IE" onclick="javascript:gotoSubmit8_2(event)"/>
...
<script language="javascript">
function gotoSubmit8_2(evt) {
...
evt=evt?evt:(window.event?window.event:null);
alert(evt); //use evt
...
}
</script>
9.event.x與event.y問題
說明:IE下,even對象有x,y屬性,但是沒有pageX,pageY屬性;Firefox下,even對象有pageX,pageY屬性,但是沒有x,y屬性.
解決方案:使用mX(mX = event.x ? event.x : event.pageX;)來代替IE下的event.x或者Firefox下的event.pageX.
10.event.srcElement問題
說明:IE下,even對象有srcElement屬性,但是沒有target屬性;Firefox下,even對象有target屬性,但是沒有srcElement屬性.
解決方案:使用obj(obj = event.srcElement ? event.srcElement : event.target;)來代替IE下的event.srcElement或者Firefox下的event.target.