IE與火狐的一些相容問題與解決方法

2021-06-10 10:15:00 字數 3262 閱讀 1875

1. document.form.item 問題

(1)現有問題:

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

(2)解決方法:

改用 document.formname.elements["elementname"]

(3)其它

2. 集合類物件問題

(1)現有問題:

現有**中許多集合類物件取用時使用 (),ie 能接受,mf 不能。

(2)解決方法:

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

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

(3)其它

3. window.event

(1)現有問題:

使用 window.event 無法在 mf 上執行

(2)解決方法:

mf 的 event 只能在事件發生的現場使用,此問題暫無法解決。可以這樣變通:

原**(可在ie中執行):

...

新**(可在ie和mf中執行):

...此外,如果新**中第一行不改,與老**一樣的話(即 gotosubmit 呼叫沒有給引數),則仍然只能在ie中執行,但不會出錯。所以,這種方案 tpl 部分仍與老**相容。

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

(1)現有問題

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

(2)解決方法

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

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

(1)現有問題

在ie中,利用 eval(idname) 可以取得 id 為 idname 的 html 物件,在mf 中不能。

(2)解決方法

用 getelementbyid(idname) 代替 eval(idname)。

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

(1)現有問題

在 mf 中,因為物件 id 不作為 html 物件的名稱,所以可以使用與 html 物件 id 相同的變數名,ie 中不能。

(2)解決方法

在宣告變數時,一律加上 var ,以避免歧義,這樣在 ie 中亦可正常執行。

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

(3)其它

7. event.x 與 event.y 問題

(1)現有問題

在ie 中,event 物件有 x, y 屬性,mf中沒有。

(2)解決方法

在mf中,與event.x 等效的是 event.pagex。但event.pagex ie中沒有。

故採用 event.clientx 代替 event.x。在ie 中也有這個變數。

event.clientx 與 event.pagex 有微妙的差別(當整個頁面有滾動條的時候),不過大多數時候是等效的。

如果要完全一樣,可以稍麻煩些:

mx = event.x ? event.x : event.pagex;

然後用 mx 代替 event.x

(3)其它

event.layerx 在 ie 與 mf 中都有,具體意義有無差別尚未試驗。

8. 關於frame

(1)現有問題

在 ie中 可以用window.testframe取得該frame,mf中不行

(2)解決方法

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

如果在frame標籤中書寫了以下屬性:

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

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

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

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

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

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

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

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

關於frame和window的描述可以參見bbs的『window與frame』文章

以及/test/js/test_frame/目錄下面的測試

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

10.在mf中沒有  parentelement parement.children  而用

parentnode parentnode.childnodes

childnodes的下標的含義在ie和mf中不同,mf使用dom規範,childnodes中會插入空白文字節點。

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

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

mf中input.parentnode的值為form, 而ie中input.parentnode的值為空節點

mf中節點沒有removenode方法,必須使用如下方法 node.parentnode.removechild(node)

11.const 問題

(1)現有問題:

在 ie 中不能使用 const 關鍵字。如 const constvar = 32; 在ie中這是語法錯誤。

(2)解決方法:

&nwww.cssyoo.com

IE6的一些相容問題

1 css相容問題 1 ie6不識別html5標籤 解決 引入html5shiv.js庫 2 ie6元素左右浮動,子元素設定高度後,父元素的浮動消失 解決 給子元素也加上浮動 3 ie6下第一塊元素浮動後,第二塊元素加的margin left值等於第一塊元素的寬度,會有間隙問題 解決 第二塊元素去掉...

一些相容問題

1.ie9以上瀏覽器input文字框 密碼框後面的小叉子 小眼睛問題 通過css虛擬元素 ms clear ms reveal 禁用 input ms clear 隱藏文字框叉子 input ms reveal 隱藏密碼框小眼睛 2.pie.htc 可以實現很多css3屬性在ie下的相容性 如 圓角...

有關IE6相容問題與解決

何為相容問題 所謂的瀏覽器相容性問題,是指因為不同的瀏覽器對同一段 有不同的解析,造成頁面顯示效果不統一的情況。在大多數情況下,我們的需求是,無論使用者用什麼瀏覽器來檢視我們的 或者登陸我們的系統,都應該是統一的顯示效果。所以瀏覽器的相容性問題是前端開發人員經常會碰到和必須要解決的問題。問題一 瀏覽...