js中兼容性問題

? ? ? ? ? ? ? ? ? ? ? JS中出現(xiàn)的兼容性問題的總結(jié)

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

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

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

IE下: currentStyle

Chrome,FF下: getComputedStyle(oDiv,false)

兼容兩個(gè)瀏覽器的寫法:

if(oDiv.currentStyle){

alert(oDiv.currentStyle.width);

}else{

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

}

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

封裝一個(gè)獲取行外樣式的函數(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)的兼容性問題:

對(duì)于字符串也有類似于 數(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),正常

--高版本瀏覽器:但是會(huì)包含文本節(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)時(shí),最好用children屬性。

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

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

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

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

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

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

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

--兼容寫法: 找到ul的第一個(gè)元素節(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對(duì)象,出現(xiàn)的兼容性問題

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

IE/Chrom: event.clientX;event.clientY

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

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

document.oncilck=function(ev){

var oEvent==ev||event;

if(oEvent){

alert(oEvent.clientX);

}

}

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

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

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

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

多事件綁定封裝成一個(gè)兼容函數(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)于獲取滾動(dòng)條距離而出現(xiàn)的問題

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

IE,Chrome: document.body.scrollTop

FF: document.documentElement.scrollTop

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鳞骤,隨后出現(xiàn)的幾起案子窒百,更是在濱河造成了極大的恐慌,老刑警劉巖豫尽,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篙梢,死亡現(xiàn)場離奇詭異,居然都是意外死亡美旧,警方通過查閱死者的電腦和手機(jī)渤滞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門贬墩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妄呕,你說我怎么就攤上這事陶舞。” “怎么了绪励?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵肿孵,是天一觀的道長。 經(jīng)常有香客問我疏魏,道長停做,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任大莫,我火速辦了婚禮蛉腌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘只厘。我一直安慰自己烙丛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布懈凹。 她就那樣靜靜地躺著蜀变,像睡著了一般。 火紅的嫁衣襯著肌膚如雪介评。 梳的紋絲不亂的頭發(fā)上库北,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音们陆,去河邊找鬼寒瓦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛坪仇,可吹牛的內(nèi)容都是我干的杂腰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼椅文,長吁一口氣:“原來是場噩夢啊……” “哼喂很!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起皆刺,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤少辣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后羡蛾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漓帅,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了忙干。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片器予。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捐迫,靈堂內(nèi)的尸體忽然破棺而出乾翔,到底是詐尸還是另有隱情,我是刑警寧澤弓乙,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布末融,位于F島的核電站,受9級(jí)特大地震影響暇韧,放射性物質(zhì)發(fā)生泄漏勾习。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一懈玻、第九天 我趴在偏房一處隱蔽的房頂上張望巧婶。 院中可真熱鬧,春花似錦涂乌、人聲如沸艺栈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湿右。三九已至,卻和暖如春罚勾,著一層夾襖步出監(jiān)牢的瞬間毅人,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工尖殃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丈莺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓送丰,卻偏偏與公主長得像缔俄,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子器躏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • 一俐载、DOM 什么是DOM?Document Object Model(文檔對(duì)象模型)登失。DOM是針對(duì)HTML和XML...
    空谷悠閱讀 973評(píng)論 0 2
  • Ecmascript 大括號(hào)的位置function f() { return { h:'Hello Wo...
    FConfidence閱讀 993評(píng)論 0 2
  • 以后是對(duì)于初學(xué)者有幫助的一些JS的方法API遏佣,使用即說明 ■JS組成■1,ECMAScript : js的核心標(biāo)準(zhǔn)...
    簡愛的三年閱讀 827評(píng)論 0 0
  • 1. 默認(rèn)的內(nèi)外邊距不同 問題: 各個(gè)瀏覽器默認(rèn)的內(nèi)外邊距不同 解決: *{margin:0;padding:0;...
    jslxm閱讀 833評(píng)論 0 2
  • w一:rem布局公式 document.documentElement.style.fontSize=20*doc...
    stars甜閱讀 783評(píng)論 0 1