js兼容

1.關(guān)于獲取行外樣式 currentStyle 和 getComputedStyle 出現(xiàn)的兼容性問題

我們都知道js通過style不可以獲取行外樣式滓技,當(dāng)我們需要獲取行外樣式時:

我們一般通過這兩個方法獲取行外樣式:

IE下: currentStyle

Chrome,FF下: getComputedStyle(oDiv,false)

兼容兩個瀏覽器的寫法:

if(oDiv.currentStyle){

alert(oDiv.currentStyle.width);

}else{

alert(getComputedStyle(oDiv,false).width);

}

*注:在解決很多兼容性寫法時,都是用if..else..

封裝一個獲取行外樣式的函數(shù):(兼容所有瀏覽器,包括低版本IE6,7)

funtion getStyle(obj,name){

if(obj.currentStyle){

//IE

return obj.currentStyle[name];

}else{

//Chrom,FF

return getComputedStyle(obj,false)[name];

}

}

?? ?調(diào)用:getStyle(oDiv,'width');

2.關(guān)于用“索引”獲取字符串每一項(xiàng)出現(xiàn)的兼容性問題:

對于字符串也有類似于 數(shù)組 這樣的通過 下標(biāo)索引 獲取每一項(xiàng)的值,

var str="abcde";

aletr(str[1]);

但是低版本的瀏覽器IE6,7不兼容

兼容方法:str.charAt(i)?? ?//全部瀏覽器都兼容

var str="abcde";

for(var i=0;i

alert(str.charAt(i));?? //放回字符串中的每一項(xiàng)

}

3.關(guān)于DOM中 childNodes 獲取子節(jié)點(diǎn)出現(xiàn)的兼容性問題

childNodes:獲取子節(jié)點(diǎn),

--IE6-8:獲取的是元素節(jié)點(diǎn),正常

--高版本瀏覽器:但是會包含文本節(jié)點(diǎn)和元素節(jié)點(diǎn)(不正常)

解決方法: 使用nodeType:節(jié)點(diǎn)的類型,并作出判斷

--nodeType=3-->文本節(jié)點(diǎn)

--nodeTyPE=1-->元素節(jié)點(diǎn)

例: 獲取ul里所有的子節(jié)點(diǎn),讓所有的子節(jié)點(diǎn)背景色變成紅色

獲取元素子節(jié)點(diǎn)兼容的方法:

var oUl=document.getElementById('ul');

for(var i=0;i

if(oUl.childNodes[i].nodeType==1){

oUl.childNodes[i].style.background='red';

}

}

注:上面childNodes為我們帶來的困擾完全可以有children屬性來代替昂秃。

children屬性:只獲取元素節(jié)點(diǎn),不獲取文本節(jié)點(diǎn),兼容所有的瀏覽器,

比上面的好用所以我們一般獲取子節(jié)點(diǎn)時,最好用children屬性。

var oUl=document.getElementById('ul');

oUl.children.style.background="red";

4.關(guān)于使用 firstChild,lastChild 等,獲取第一個/最后一個元素節(jié)點(diǎn)時產(chǎn)生的問題

--IE6-8下: firstChild,lastChild,nextSibling,previousSibling,獲取第一個元素節(jié)點(diǎn)

(高版本瀏覽器IE9+,FF,Chrome不兼容,其獲取的空白文本節(jié)點(diǎn))

--高版本瀏覽器下: firstElementChild,lastElementChild,nextElementSibling,previousElementSibling

(低版本瀏覽器IE6-8不兼容)

--兼容寫法: 找到ul的第一個元素節(jié)點(diǎn),并將其背景色變成紅色

var oUl=document.getElementById('ul');

if(oUl.firstElementChild){

//高版本瀏覽器

oUl.firstElementChild.style.background='red';

}else{

//IE6-8

oUl.firstChild.style.background='red';

}

5.關(guān)于使用 event對象哈踱,出現(xiàn)的兼容性問題

如: 獲取鼠標(biāo)位置

IE/Chrom: event.clientX;event.clientY

FF/IE9以上/Chrom: 傳參ev--> ev.clientX;ev.clientY

獲取event對象兼容性寫法: var oEvent==ev||event;

document.oncilck=function(ev){

var oEvent==ev||event;

if(oEvent){

alert(oEvent.clientX);

}

}

6.關(guān)于為一個元素綁定兩個相同事件:attachEvent/attachEventLister 出現(xiàn)的兼容問題

事件綁定:(不兼容需要兩個結(jié)合做兼容if..else..)

IE8以下用: attachEvent('事件名',fn);

FF,Chrome,IE9-10用: attachEventLister('事件名',fn,false);

多事件綁定封裝成一個兼容函數(shù):

function myAddEvent(obj,ev,fn){

if(obj.attachEvent){

//IE8以下

obj.attachEvent('on'+ev,fn);

}else{

//FF,Chrome,IE9-10

obj.attachEventLister(ev,fn,false);

}

}

myAddEvent(oBtn,'click',function(){

alert(a);

});

myAddEvent(oBtn,'click',function(){

alert(b);

});

7.關(guān)于獲取滾動條距離而出現(xiàn)的問題

當(dāng)我們獲取滾動條滾動距離時:

IE,Chrome: document.body.scrollTop

FF: document.documentElement.scrollTop

兼容處理:var scrollTop=document.documentElement.scrollTop||document.body.scrollTop

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梨熙,隨后出現(xiàn)的幾起案子开镣,更是在濱河造成了極大的恐慌,老刑警劉巖咽扇,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邪财,死亡現(xiàn)場離奇詭異陕壹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)树埠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門糠馆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怎憋,你說我怎么就攤上這事又碌。” “怎么了绊袋?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵毕匀,是天一觀的道長。 經(jīng)常有香客問我癌别,道長皂岔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任展姐,我火速辦了婚禮躁垛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘圾笨。我一直安慰自己教馆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布墅拭。 她就那樣靜靜地躺著活玲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谍婉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天镀钓,我揣著相機(jī)與錄音穗熬,去河邊找鬼。 笑死丁溅,一個胖子當(dāng)著我的面吹牛唤蔗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窟赏,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼妓柜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涯穷?” 一聲冷哼從身側(cè)響起棍掐,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拷况,沒想到半個月后作煌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掘殴,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年粟誓,在試婚紗的時候發(fā)現(xiàn)自己被綠了奏寨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹰服,死狀恐怖病瞳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悲酷,我是刑警寧澤仍源,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站舔涎,受9級特大地震影響笼踩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜亡嫌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一嚎于、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挟冠,春花似錦于购、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至控淡,卻和暖如春嫌吠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掺炭。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工辫诅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涧狮。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓炕矮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親者冤。 傳聞我的和親對象是個殘疾皇子肤视,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容