常見(jiàn)的瀏覽器兼容性問(wèn)題大匯總

1.HTML對(duì)象獲取問(wèn)題

FireFox :document.getElementByld('idName');

ie:document.idname或者document.getElementByld('idName');

解決辦法:統(tǒng)一使用document.getElementByld('idName');

2.const問(wèn)題

說(shuō)明:Firefox下哼丈,可以使用const關(guān)鍵字或var 關(guān)鍵字來(lái)定義常量醉旦;

IE下:只能使用var關(guān)鍵字來(lái)定義常量桨啃。

解決方法:統(tǒng)一使用var關(guān)鍵字來(lái)定義常量

3.event.x與event.y問(wèn)題

說(shuō)明:IE下照瘾,event對(duì)象有x,y屬性析命,但是沒(méi)有pageX,pageY屬性逃默;

Firfox下完域,event對(duì)象有pageX,pageY屬性,但沒(méi)有x,y屬性凹耙;

解決辦法:使用mX(mX = event.x ? event.x : event.pageX;)來(lái)代替IE下的event.x或者Firefox下的event.pageX.

4.window.location.href問(wèn)題

說(shuō)明:IE或者Firefox2.0下使兔,可以使用window.location或者window.location.href;

Firefox1.5x下虐沥,只能使用window.location.

解決方法:使用window.location來(lái)代替window.location.href.

5.frame問(wèn)題

以下面的frame為例:

<frame src='xxx.html' id='frameId' name='frameName' />

(1)訪問(wèn)frame對(duì)象

IE:使用window.frameId或者window.frameName來(lái)訪問(wèn)這個(gè)frame對(duì)象欲险,frameId和frameName可以同名匹涮。

Firefox:只能使用window.frameName來(lái)訪問(wèn)這個(gè)frame對(duì)象。

另外喜每,在IE和Firefox中都可以使用window.document.getElementById('frameId')來(lái)訪問(wèn)這個(gè)frame對(duì)象带兜。

(2)切換frame內(nèi)容:

在IE和Firefox中都可以使用window.document.getElementById('testFrame').src = 'xxx.html'或window.frameName.location = 'xxx.html'來(lái)切換frame的內(nèi)容刚照。

如果需要將frame中的參數(shù)傳回父窗口(注意不是opener,而是parent frame),可以在frame中使用parent來(lái)訪問(wèn)父窗口喧兄。例如:parent.document.form1.filename.value = 'Aqing';

6.模態(tài)和非模態(tài)窗口問(wèn)題

說(shuō)明:IE下啊楚,可以通過(guò)showModalDialog和showModelessDialog打開(kāi)模態(tài)和非模態(tài)窗口恭理;Firefox下則不能.

解決方法:直接使用window.open(pageURL,name,paramenters)

方式打開(kāi)新窗口蚯斯。

如果需要將子窗口中的參數(shù)傳遞回父窗口,可以在子窗口中使用window.opener來(lái)訪問(wèn)父窗口遭赂。

例如:var parWin = window.opener; parWin.document.getElementById('Aqing').value = 'Aqing';

7.fiefox與IE的父元素(parentElement)的區(qū)別

IE:obj.parentElement

firefox:obj.parentNode

解決方法:因?yàn)閒irefox與IE都支持DOM茄猫,因此使用obj.parentNode是不錯(cuò)的選擇困肩。

8.document.formName.item(itemName)問(wèn)題

問(wèn)題說(shuō)明:IE下,可以使用document.formName.item('itemName')或者document.formName.elements['elementName'];Firefox下勇劣,只能使用document.formName.elements['elementName'].

解決方法:統(tǒng)一使用document.formName.elements['elementName'].

9.集合類(lèi)對(duì)象問(wèn)題

問(wèn)題說(shuō)明:IE下潭枣,可以使用()或[] 獲取集合類(lèi)的對(duì)象比默;Firefox下,只能使用[ ] 獲取集合對(duì)象盆犁。

解決方法:統(tǒng)一使用[] 獲取集合類(lèi)的對(duì)象命咐。

10.自定義屬性問(wèn)題

問(wèn)題說(shuō)明:IE下,可以使用獲取常規(guī)屬性的方法來(lái)獲取自定義屬性谐岁,也可以使用getAttribute()獲取自定義屬性醋奠;Firefox下,只能使用getAttribute()獲取自定義屬性伊佃。

解決方法:統(tǒng)一通過(guò)getAttribute()獲取自定義屬性窜司。

11.input,type 屬性問(wèn)題

問(wèn)題說(shuō)明:IE下input.type屬性為只讀;但是Firefox下input.type屬性為讀寫(xiě)锭魔。

解決辦法:不修改input.type屬性例证。如果必須要修改迷捧,可以先隱藏原來(lái)的input笙蒙,然后在同樣的位置再插入一個(gè)新的input元素

12.event.srcElement問(wèn)題

問(wèn)題說(shuō)明:IE下轧葛,event對(duì)象有srcElement屬性,但是沒(méi)有target屬性衷笋;Firefox下吝秕,event對(duì)象有target屬性容客,但是沒(méi)有srcElement屬性。

解決方法:使用srcObj = event.srcElement ? event.srcElement:event.target;如果考慮第八條問(wèn)題,就改用myEvent代替event即可士袄。

13.body載入問(wèn)題

問(wèn)題說(shuō)明:Firefox的body對(duì)象在body標(biāo)簽沒(méi)有被瀏覽器完全讀入之前就存在。而IE的body的對(duì)象則必須在body標(biāo)簽被瀏覽器完全讀入之后才存在。

【注】這個(gè)問(wèn)題尚未實(shí)際驗(yàn)證这敬,待驗(yàn)證后再修改。

【注】經(jīng)驗(yàn)證,IE6蝙茶,Opera9以及FireFox2中不存在上述問(wèn)題,單純的JS腳本可以訪問(wèn)腳本之前已經(jīng)載入的所有對(duì)象和元素苞尝,即使這個(gè)元素還沒(méi)有載入完成轴脐。

14,事件委托方法

問(wèn)題說(shuō)明:IE下碴巾,使用document.body.onload = inject;其中function.inject()在這個(gè)之前已被實(shí)現(xiàn)啤月;在Firefox下,使用document.body.onload = inject();

解決方法:統(tǒng)一使用document.body.onload = new Function('inject()');或者document.body.onload = function()

{}

【注意】Function和funtion的區(qū)別杉武。

15.Table操作問(wèn)題

問(wèn)題說(shuō)明:ie,firefox以及其他瀏覽器對(duì)于table標(biāo)簽的操作都各不相同,在ie中不允許對(duì)table和tr的innerHtml賦值,使用js增加一個(gè)tr時(shí)缰趋,使用appendChild方法也不管用评甜。

解決方法://向table追加一個(gè)空行粘舟;

var row = otable.insertRow(-1); var cell = document.createElement('td');cell.innerHTML = "";cell.className = "XXX";row.appendChild(cell);[注]由于我很少使用JS直接操作表格晰骑,這個(gè)問(wèn)題沒(méi)有遇到過(guò)政模,建議使用JS框架集來(lái)操作table,如JQuery。

16彪见,對(duì)象寬高賦值問(wèn)題

問(wèn)題說(shuō)明:FireFox中類(lèi)似obj.style.height = imgObj.height的語(yǔ)句無(wú)效。

CSS

16.cursor:hand VS cursor:pointer;

firefox 不支持hand跷坝,但ie支持pointer

解決方法:統(tǒng)一使用pointer

17.innerText 在IE中能正常工作靠粪,但在FireFox中卻不行

需用textContent.

解決方法:

if(navigator.appName.indexOf('Explorer') > 1){

? ? ?document.getElementById('element').innerText = "my text";

}else{

document.getElemenetById(element).textContent = "my text";

}

18.CSS透明

IE:filter:progid:DXImage Transform.Microsoft.Alpha(style=0,opacity = 60);

FF:opacity:0.6.

opacity 透明畔乙,子元素會(huì)繼承透明屬性。解決方式:1,使用background:rgba(0,0,0,6)//IE8及以下無(wú)效果。2,使用定位,背景色與子元素處于同級(jí)關(guān)系。

19.css中的width和padding

在IE7和FF中的width 寬度不包括padding,在ie6中包括padding

20.FF和IEBOX模型解釋不一致導(dǎo)致相差2px

box.style{width:100;border:1px;}

ie理解為box.width = 100

ff理解為box.width = 100+1*2 = 102 //加上邊框2px

解決方法:div{margin :30 !important;margin:28px已添;}

注意著兩個(gè)margin的順序一定不能寫(xiě)反疏哗,IE不能識(shí)別芽偏!important這個(gè)屬性被碗,但別的瀏覽器可以識(shí)別衣迷。所以在IE下其實(shí)解釋成這樣:div{maring:30px;margin:28px}重復(fù)定義的話按照最后一個(gè)來(lái)執(zhí)行佃迄,所以不可以只寫(xiě)margin:XXpx!important;

21.IE5和IE6的BOX解釋不一致導(dǎo)致相差2px

box.style{width:100;border:1px}

ie理解為box.width = 100 ff理解為box.width = 100 + 1*2 = 102

解決方法:div{margin:30px!important;margin:28px}注意著兩個(gè)margin的順序一定不能寫(xiě)反吼肥。IE不能識(shí)別啤斗!important這個(gè)屬性崔拥,但別的瀏覽器可以識(shí)別慈俯。所以在IE下其實(shí)解釋成這樣:div{margin:30px;margin:28px}重復(fù)定義的話按照最后一個(gè)來(lái)執(zhí)行步鉴,所以不可以只寫(xiě)margin:xxpx !important;

21.IE5和IE6的BOX解釋不一致

IE5下div{width:300px;margin:0 10px 0 10px} div的寬度會(huì)被解釋為300px-10px(左填充)-10px(右填充)骚勘,最終div寬度為280px,而在IE6和其他瀏覽器上的寬度則是300px+10px

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玲献,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宝踪,居然都是意外死亡溶耘,警方通過(guò)查閱死者的電腦和手機(jī)庐扫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)验靡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)怔锌,“玉大人岛杀,你說(shuō)我怎么就攤上這事±峤矗” “怎么了经伙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵酪劫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)背率,這世上最難降的妖魔是什么埃篓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任丧没,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骨坑。我一直安慰自己斑芜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪麦乞。 梳的紋絲不亂的頭發(fā)上声畏,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼锋八。 笑死檀轨,一個(gè)胖子當(dāng)著我的面吹牛吆玖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播槐雾,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼厕氨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芹壕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起疫剃,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎更耻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年畏妖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淘邻。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扶平,死狀恐怖赎瑰,靈堂內(nèi)的尸體忽然破棺而出踩娘,到底是詐尸還是另有隱情养渴,我是刑警寧澤雷绢,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站理卑,受9級(jí)特大地震影響翘紊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜藐唠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一帆疟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧中捆,春花似錦鸯匹、人聲如沸坊饶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匿级。三九已至蟋滴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痘绎,已是汗流浹背津函。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孤页,地道東北人尔苦。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像行施,于是被迫代替她去往敵國(guó)和親允坚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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