IE && W3C

來源:互聯網
上載者:User

標籤:

JavaScript在IE瀏覽器和Firefox瀏覽器中的差異總結

 

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

 

1.HTML對象的 id 作為對象名的問題

IE:HTML 對象的 ID 可以作為 document 的下屬物件變數名直接使用

Firefox:不支援

解決方案:使用document.getElementById替代document.all

 

2.如果控制項只有name,沒有id, 用getElementById時:

IE:可以找到對象

Firefox:返回NULL

解決方案:所有控制項必須設定ID屬性

 

3.Evel:

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的解釋不同。例如:

<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‘;

 

IE && W3C

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.