(轉載)JavaScript在IE瀏覽器和Firefox瀏覽器中的差別總結

本文轉載自:http://www.bairuiw.com/front-end-skill/3903.htmlhtml

JavaScript在IE瀏覽器和Firefox瀏覽器中存在一些差別,如下對這些差別部分進行了總結,以及解決方案: node

1.HTML對象的 id 做爲對象名的問題 瀏覽器

IE:HTML 對象的 ID 能夠做爲 document 的下屬對象變量名直接使用 函數

Firefox:不支持ui

解決方法:使用document.getElementById替代document.allspa

2.若是控件只有name,沒有id, 用getElementById時code

IE:能夠找到對象 orm

Firefox:返回NULLhtm

解決方法:全部控件必須設置ID屬性對象

3.Eval

IE:支持,利用 eval(idName) 能夠取得 id 爲 idName 的 HTML 對象

Firefox:不支持

解決方法:統一使用getElementById(idName) 代替 eval(idName)

4.Event

IE:用全局對象window.event

Firefox:event只能在事件發生的現場使用,在調用函數時傳入event對象

解決方法:使用以前作一下瀏覽器類型判斷,各用各的

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

6.集合類對象問題

IE:可使用()或[]獲取集合類對象

Firefox:只能使用[]獲取集合類對象

現有代碼中存在許多,不能在 Firefox 下運行 

解決方法:統一使用[]獲取集合類對象。document.form.item(「itemName」) 這樣的語句改成document.form.elements["elementName"]

7.變量名與某 HTML 對象 id 相同的問題

IE:不能使用與 HTML 對象 id 相同的變量名

Firefox:可使用 

解決方法:在聲明變量時,一概加上 var ,以免歧義,這樣在 IE 中亦可正常運行。此外,最好不要取與 HTML 對象 id 相同的變量名,以減小錯誤

8.Event定位問題

IE:支持event.x 和event.y

Firefox:支持event.pageX和event.pageY

解決方法,統一使用event.clientX和event.clientY,可是在Firefox中event.clientX 與 event.pageX 有微妙的差異(當整個頁面有滾動條的時候),不過大多數時候是等效的。若是要徹底同樣,能夠判斷瀏覽器類型後對應使用

9.父結點的問題

IE:parentElement parentElement.children

Firefox:parentNode parentNode.childNodes 

childNodes的下標的含義在IE和Firefox中不一樣,Firefox使用DOM規範,childNodes中會插入空白文本節點。通常能夠經過node.getElementsByTagName()來回避這個問題。

當html中節點缺失時,IE和Firefox對parentNode的解釋不一樣。例如: 

1
2
3
4
5
< form >
     < table >
         < input />
     </ table >
</ form >

IE:input.parentNode的值爲空節點

Firefox:input.parentNode的值爲form 

解決方法:Firefox中節點沒有removeNode方法,必須使用以下方法 node.parentNode.removeChild(node) 

10.const 問題

IE:不支持 const 關鍵字。如 const constVar = 32; 在IE中這是語法錯誤

Firefox:支持

解決方法:不使用 const ,以 var 代替

11.body 對象

IE:在body標籤徹底被讀入以後才存在

Firefox:在body標籤沒有被瀏覽器徹底讀入以前就存在

12.自定義屬性問題

IE:可使用獲取常規屬性的方法來獲取自定義屬性,也可使用getAttribute()獲取自定義屬性 

Firefox:只能使用getAttribute()獲取自定義屬性

解決方法:統一經過getAttribute()獲取自定義屬性

13.event.srcElement問題

IE:even.srcElement

Firefox:even.target

解決方法:使用時判斷瀏覽器類型,各用各的

14.模態和非模態窗口

IE:支持模態和非模態窗口

Firefox:不支持

解決方法:直接使用window.open(pageURL,name,parameters)方式打開新窗口。若是須要將子窗口中的參數傳遞迴父窗口,能夠在子窗口中使用window.opener來訪問父窗口

15.innerText

IE:innerText

Firefox:textContent

16.相似 obj.style.height = imgObj.height 的語句

IE:有效

Firefox:無效

解決方法:統一使用obj.style.height = imgObj.height + ‘px’;

相關文章
相關標籤/搜索