js在火狐和IE下的差別

2021-09-25 12:41:02 字數 2623 閱讀 6069

1. document.form.item 問題

現有**中存在許多 document.formname.item("itemname") 這樣的語句,不能在firefox下執行

解決方法:

統一使用 document.formname.elements["elementname"]

2. 集合類物件問題

問題:ie下,可以使用()或獲取集合類物件;firefox下,只能使用獲取集合類物件     

解決方法:

改用[ ]作為下標運算。如:document.forms("formname") 改為 document.forms["formname"]

又如:document.getelementsbyname("inputname")(1) 改為 document.getelementsbyname("inputname")[1]

3. event

獲取event問題:

window.event只能在ie下執行,而不能在firefox下執行,這是因為firefox的event只能在事件發生的現場使用。

解決方法:

在ie中,不能把event物件作為引數傳遞給事件處理程式,只能用window.event或者event來引用event物件。

firefox中獲取event的方法:

(1) 從html頁面傳遞引數event    

(2) event = arguments.callee.caller.arguments[0];

function getevent(evt)

event屬性問題:

ie下,event物件有x,y屬性,但是沒有pagex,pagey屬性;firefox下,event物件有pagex,pagey屬性,但是沒有x,y屬性。

firefox中的event.pagex相當於ie中的event.x

解決方法:event.x = event.x ? event.x : event.pagex;

其它:event.layerx 在ie與火狐中都有,具體意義有無差別尚未試驗。

4. html 物件的 id 作為物件名的問題

問題:在ie中,html物件的id可以作為document的下屬物件變數名直接使用,而在firefox中不能。

解決方法:

統一用 getelementbyid("idname") 代替 idname 作為物件變數使用。

5. 用idname字串取得物件的問題

問題:在ie中,利用eval(idname)可以取得id為idname的html物件,而在firefox中不能。

解決方法:

統一使用 getelementbyid(idname) 代替 eval(idname)

6. 變數名與某 html 物件 id 相同的問題

問題:ie中html物件的id可以作為document的下屬物件變數名直接使用;而firefox則不能。在firefox中,使用與html物件id相同的變數名;ie下則不能。

解決方法:

統一使用使用document.getelementbyid("idname")代替document.idname

在宣告變數時,一律加上 var ,以避免歧義。

此外,最好不要取與 html 物件 id 相同的變數名,以減少錯誤。

7. frame問題

問題:在 ie中 可以用window.testframe取得該frame,而firefox中不行

解決方法:

在frame的使用方面火狐和ie的最主要的區別是:

ie可以通過id或者name訪問這個frame對應的window物件

而firefox只可以通過name來訪問這個frame對應的window物件

如果上述frame標籤寫在最上層的window裡面的htm裡面,那麼可以這樣訪問

ie:window.top.frameid或者window.top.framename來訪問這個window物件

firefox:只能這樣window.top.framename來訪問這個window物件

另外,在火狐和ie中都可以使用window.top.document.getelementbyid("frameid")來訪問frame標籤

並且可以通過window.top.document.getelementbyid("testframe").src = 'xx.htm'來切換frame的內容

也都可以通過window.top.framename.location = 'xx.htm'來切換frame的內容

9. 在firefox中,自己定義的屬性必須getattribute()取得

if(document.all));

}else

10.在firefox中沒有 parentelement children 而用 parentnode childnodes

childnodes的下標的含義在ie和firefox中不同,firefox使用dom規範,childnodes中會插入空白文字節點 ---- firefox下childnodes會把換行和空白字元都算作父節點的子節點,

而ie的childnodes和children不會。

一般可以通過node.getelementsbytagname()來迴避這個問題。

當html中節點缺失時,ie和firefox對parentnode的解釋不同,例如

js在火狐和IE下的差別 非常好

1.document.form.item 問題 現有 中存在許多 document.formname.item itemname 這樣的語句,不能在firefox下執行 解決方法 統一使用 document.formname.elements elementname 2.集合類物件問題 問題 ie下...

display屬性在IE和火狐下的相容

在做乙個web應用時有用到 行的現實與隱藏問題,開始實現如下 function test else 在火狐下可以正常執行,但是在ie下卻不能正確執行 分析後認為style屬性removerattr之後,ie下會有undefined異常 後修改 如下 function test else 這樣,仍然不...

接受IE和火狐回車的JS

ie 下,keycode 對於keypress事件,表示按下按鍵的unicode字元 對於keydown keyup 事件,表示按下按鍵的數字 無charcode屬性。dom標準下,keycode 表示按下按鍵的數字 charcode 按下按鍵的unicode字元。netscape firefox ...