編寫(xiě)跨瀏覽器的javascript代碼必備[js多瀏覽器兼容寫(xiě)法]
序號(hào) |
操作 |
分類 |
IE |
FireFox |
Mozilla |
當(dāng)前 |
備注 |
1 |
"." |
訪問(wèn)tag的固有屬性 |
OK |
OK |
OK |
OK |
|
2 |
"." |
訪問(wèn)tag的用戶定義屬性 |
OK |
NO |
NO |
OK |
可以用getAttribute函數(shù) 替代 |
3 |
obj.getAttribute |
訪問(wèn)tag的固有屬性 |
OK |
OK |
OK |
OK |
|
4 |
obj.getAttribute |
訪問(wèn)tag的用戶定義屬性 |
OK |
OK |
OK |
OK |
|
5 |
document.all |
訪問(wèn)document的所有子元素 |
OK |
OK |
NO |
OK |
建議用childNodes對(duì)象或者getElementById函數(shù)實(shí)現(xiàn)對(duì)應(yīng)操作。 |
6 |
obj.all |
訪問(wèn)非document元素的所有子元素 |
OK |
NO |
NO |
OK |
同上 |
7 |
根據(jù)元素的id/name來(lái)取得元素。 |
OK |
NO |
NO |
OK |
注意:很多元素是沒(méi)有name屬性的,eg: td, div,span... | |
8 |
變量名 = "" |
隱式定義變量-通過(guò)向變量名附值方式定義一個(gè)新的變量。 |
OK |
OK |
OK |
OK |
建議:為避免必要的麻煩,顯示定義變量。 |
9 |
id |
通過(guò)id直接調(diào)用對(duì)象 |
OK |
OK |
NO |
OK |
eval()函數(shù)用來(lái)執(zhí)行腳本,所以向eval函數(shù)里面?zhèn)魅雽?duì)象id/name的話,IE同樣會(huì)返回對(duì)象的引用。 |
10 |
name |
通過(guò)name直接調(diào)用對(duì)象 |
OK |
NO |
NO |
OK |
同上/ 原因同7 |
11 |
name |
支持的特殊字符("!",".","@","#","$","<",...) |
NO |
OK |
OK |
NO |
其它的字符沒(méi)有測(cè)試 |
12 |
tr.innerHTML = "" |
設(shè)置TR元素的內(nèi)部HTML腳本 |
NO |
OK |
OK |
NO |
在IE中,table、tr的innerHTML是只讀屬性,不能夠?qū)ζ渲苯釉O(shè)置。可以通過(guò)insertRow/insertCell函數(shù)進(jìn)行設(shè)置。 |
13 |
cells對(duì)象訪問(wèn) |
訪問(wèn)tr的cells對(duì)象 |
NO |
OK |
OK |
undefined |
可以將其插入Table再訪問(wèn),或者可以用getElementsByTagName函數(shù) 對(duì)td/th訪問(wèn)。 |
14 |
(index) |
訪問(wèn)集合類對(duì)象 |
OK |
NO |
NO |
OK |
建議用正式的操作符"[]". |
15 |
obj.toString() |
取得對(duì)象的字符串"[object 對(duì)象類型的名稱]". |
NO |
OK |
OK |
NO |
可以省略toString()函數(shù),直接用對(duì)象來(lái)操作。 |
16 |
obj.class |
定義對(duì)象的css式樣/風(fēng)格。 |
NO |
OK |
NO |
- |
無(wú)法寫(xiě)測(cè)試代碼,會(huì)有編譯錯(cuò)誤!可以自己用typeof(class) == null來(lái)測(cè)試一下,沒(méi)有異常就在代碼中可以使用。 |
17 |
const |
保留關(guān)鍵字,用于定義常量。 |
NO |
OK |
OK |
- |
暫時(shí)只能不使用const。 |
18 |
input.type |
變更input元素的類型 |
NO |
OK |
OK |
NO |
IE可以初始input元素類型,但是不能變更類型。 |
19 |
obj.children |
訪問(wèn)對(duì)象的子元素集合 |
OK |
NO |
NO |
OK |
可以用childNodes對(duì)象替代。 |
20 |
node.replaceNode |
替換新的節(jié)點(diǎn)對(duì)象 |
OK |
NO |
NO |
OK |
可以用replaceChild函數(shù)替換。 |
21 |
node.removeNode |
刪除已有節(jié)點(diǎn)對(duì)象 |
OK |
NO |
NO |
OK |
可以用oldNode.parentNode.removeChild(oldNode)方式實(shí)現(xiàn)。 |
22 |
node.insertBefore |
在指定節(jié)點(diǎn)對(duì)象前面插入一個(gè)節(jié)點(diǎn)對(duì)象 |
OK |
OK |
OK |
OK |
|
23 |
obj.parentElement |
訪問(wèn)對(duì)象的父元素 |
OK |
NO |
NO |
OK |
可以用parentNode對(duì)象替代。 |
24 |
obj.childNodes.length |
返回子節(jié)點(diǎn)的數(shù)量,和tag的數(shù)量相同。 |
OK |
NO |
NO |
OK |
FF/Mozilla中,空白或者換行是文本節(jié)點(diǎn),是childNodes的成員。 |
25 |
obj. |
向指定的位置插入元素 |
OK |
NO |
NO |
OK |
insertAdjacentElement函數(shù)和insertAdjacentText函數(shù)也類似。 |
26 |
createElement() |
創(chuàng)建指定類型元素。 |
OK |
NO |
NO |
OK |
可以先創(chuàng)建出對(duì)象元素,再進(jìn)行屬性設(shè)置;或者直接以InnerHTML的形式加到對(duì)應(yīng)位置。 |
27 |
nodeName |
取對(duì)象(tag,attribute,textnode)節(jié)點(diǎn)名稱 |
OK |
OK |
OK |
OK |
有人說(shuō)存在差異,不知道是具體的前提條件,先記錄備考。 |
28 |
window.event |
取得當(dāng)前的事件對(duì)象 |
OK |
NO |
NO |
? |
可以主動(dòng)向事件的響應(yīng)函數(shù)傳入event參數(shù)。 |
29 |
event.target |
取得事件的觸發(fā)對(duì)象 |
NO |
OK |
OK |
? |
可以和srcElement共同使用;可以主動(dòng)向事件的響應(yīng)函數(shù)傳入觸發(fā)對(duì)象元素。 |
30 |
event.srcElement |
取得事件的觸發(fā)對(duì)象 |
OK |
NO |
NO |
? |
可以和target共同使用;可以主動(dòng)向事件的響應(yīng)函數(shù)傳入觸發(fā)對(duì)象。 |
31 |
event對(duì)象屬性 |
當(dāng)前三個(gè)瀏覽器的共同擁有的屬性: |
altLeft |
bubbles |
bubbles |
? |
event對(duì)象的不同點(diǎn)太多,在使用的時(shí)候需要一一檢查才行。具體可以用頁(yè)面下方的測(cè)試區(qū)域試驗(yàn)。 |
32 |
注冊(cè)event |
用attachEvent函數(shù)注冊(cè) |
OK |
NO |
NO |
- |
小心內(nèi)存泄漏?。?! |
33 |
注冊(cè)event |
addEventListener函數(shù)注冊(cè) |
NO |
OK |
OK |
- |
|
34 |
注冊(cè)event |
obj.onxxx = Function("響應(yīng)函數(shù)名稱或代碼");方式注冊(cè) |
OK |
OK |
OK |
- |
|
35 |
銷毀event |
detachEvent函數(shù)銷毀 |
OK |
NO |
NO |
- |
|
36 |
銷毀event |
removeEventListener函數(shù)銷毀 |
NO |
OK |
OK |
- |
|
37 |
銷毀event |
obj.onxxx = null;方式注冊(cè) |
OK |
OK |
OK |
- |
|
38 |
觸發(fā)event |
fireEvent函數(shù) |
OK |
NO |
NO |
- |
|
39 |
觸發(fā)event |
dispatchEvent函數(shù) |
NO |
OK |
OK |
- |
|
相關(guān)文章
TypeScript入門(mén)-基本數(shù)據(jù)類型
本文主要介紹了TypeScript基本數(shù)據(jù)類型的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-03-03js限制輸入框只能輸入數(shù)字(onkeyup觸發(fā))
這篇文章主要介紹了通過(guò)js實(shí)現(xiàn)input輸入框只能輸入數(shù)字的實(shí)現(xiàn)方法,主要是通過(guò)正則表達(dá)式替換實(shí)現(xiàn),需要的朋友可以參考下2018-09-09JavaScript設(shè)計(jì)模式之性能優(yōu)化模式享元模式
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之性能優(yōu)化模式享元模式,享元設(shè)計(jì)模式是用于性能優(yōu)化的模式,這種設(shè)計(jì)模式的核心在于可以共享技術(shù)并支持對(duì)大量細(xì)分過(guò)后的對(duì)象進(jìn)行調(diào)整,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-06-06H5實(shí)現(xiàn)手機(jī)拍照和選擇上傳功能
這篇文章主要為大家詳細(xì)介紹了H5實(shí)現(xiàn)手機(jī)拍照和選擇上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12人人網(wǎng)javascript面試題 可以提前實(shí)現(xiàn)下
JavaScript面試題要求:以下題目必須從一至四題中,選出三道題,使用原生代碼實(shí)現(xiàn),不可使用任何框架,第五題為選作題2012-01-01中高級(jí)前端必須了解的JS中的內(nèi)存管理(推薦)
這篇文章主要介紹了中高級(jí)前端必須了解的JS中的內(nèi)存管理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07JavaScript三種方法解決約瑟夫環(huán)問(wèn)題的方法
約瑟夫環(huán)問(wèn)題又稱約瑟夫問(wèn)題或丟手絹問(wèn)題,是一道經(jīng)典的算法問(wèn)題,本篇將以循環(huán)鏈表、有序數(shù)組、數(shù)學(xué)遞歸三種方式來(lái)解決約瑟夫環(huán)問(wèn)題。感興趣的可以了解一下2021-09-09