JS代碼在IE和Firefox間的區別

1. HTML 對象的 id 作爲對象名的問題 IE:HTML 對象的 ID 可以作爲 document 的下屬對象變量名直接使用 FF:不支持解決方法:使用document.getElementById替代document.all

2. 如果控件只有name,沒有id, 用getElementById時: IE:可以找到對象 FF:返回NULL 解決方法:所有控件必須設置ID屬性

3. Evel: IE:支持,利用 eval(idName) 可以取得 id 爲 idName 的 HTML 對象 FF:不支持。解決方法:統一使用getElementById(idName) 代替 eval(idName)。

 4. Event: IE:用全局對象window.event FF:event只能在事件發生的現場使用,在調用函數時傳入event對象解決方法:使用之前做一下瀏覽器類型判斷,各用各的。

5. 對象名稱中美元符號‘$’改爲使用下劃線‘_’

6. 集合類對象問題 IE:可以使用()或[]獲取集合類對象 FF:只能使用[]獲取集合類對象現有代碼中存在許多,不能在 FF 下運行解決方法:統一使用[]獲取集合類對象。document.form.item("itemName") 這樣的語句改爲document.form.elements["elementName"]

7. 變量名與某 HTML 對象 id 相同的問題 IE:不能使用與 HTML 對象 id 相同的變量名 FF:可以使用解決方法:在聲明變量時,一律加上 var ,以避免歧義,這樣在 IE 中亦可正常運行。此外,最好不要取與 HTML 對象 id 相同的變量名,以減少錯誤。

8. Event定位問題 IE:支持event.x 和event.y FF:支持event.pageX和event.pageY 解決方法,統一使用event.clientX和event.clientY,但是在FF中event.clientX 與 event.pageX 有微妙的差別(當整個頁面有滾動條的時候),不過大多數時候是等效的。如果要完全一樣,可以判斷瀏覽器類型後對應使用。

9. 父結點的問題 IE:parentElement parentElement.children FF:parentNode parentNode.childNodes childNodes的下標的含義在IE和FF中不同,FF使用DOM規範,childNodes中會插入空白文本節點。一般可以通過node.getElementsByTagName()來回避這個問題。 當html中節點缺失時,IE和FF對parentNode的解釋不同,例如

IE:input.parentNode的值爲空節點 FF:input.parentNode的值爲form FF中節點沒有removeNode方法,必須使用如下方法 node.parentNode.removeChild(node)

10. const 問題現有問題: IE:不支持 const 關鍵字。如 const constVar = 32; 在IE中這是語法錯誤。 FF:支持解決方法:不使用 const ,以 var 代替。

11. body 對象 IE:在body標籤完全被讀入之後才存在 FF:在body標籤沒有被瀏覽器完全讀入之前就存在

12. 自定義屬性問題 IE:可以使用獲取常規屬性的方法來獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性 FF:只能使用getAttribute()獲取自定義屬性. 解決方法:統一通過getAttribute()獲取自定義屬性

13. event.srcElement問題 IE:even.srcElement FF:even.target 解決方法:使用時判斷瀏覽器類型,各用各的。

14. 模態和非模態窗口 IE:支持模態和非模態窗口 FF:不支持解決方法:直接使用window.open(pageURL,name,parameters)方式打開新窗口。如果需要將子窗口中的參數傳遞迴父窗口,可以在子窗口中使用window.opener來訪問父窗口。

15. innerText IE:innerText FF:textContent

16. 類似 obj.style.height = imgObj.height 的語句 IE:有效 FF:無效解決方法:統一使用obj.style.height = imgObj.height + 'px'; 本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/nileel/archive/2009/08/19/4461687.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章