首先,在做專案前,我們一定要確認是否需要相容IE8~IE9,從剛開始就注意相容問題,做起來就會很舒服,如果專案完成後做相容,簡直就是噩夢。下面是我這幾天做IE8相容遇到的一些問題。

1、CSS樣式方面

css樣式,儘量少用css3的這些偽類選擇器,如果使用了,在後期做相容會很累,如果專案硬要相容IE8+,那就請你從一開始就避免這些偽類的使用吧。避免了最難解決的偽類問題後,剩下的就是針對IE8 IE9做一些樣式上的微調,將會異常輕鬆。

2、JS方面

2。1、IE8是不支援className選擇節點的,所以,最省時省力的方法,我們在選擇節點時,可以多使用jQuery選擇器,說實話,jQuery的相容性還真的好。當然如果你的父節點不是element,沒法用jq的時候,只能自己拓展了;

解決IE8一下不支援getElementsByClassName的方法 - CSDN部落格 這個部落格的方法適合隨意指定父節點,實測有效;

2。2、如果你要遍歷一個數組,請不要用map forEach,因為這些方法IE8 IE9都不支援,如 果你專案裡用到了,修改起來很麻煩,那麼就拓展一個map forEach方法吧。

相容IE8需要注意哪些問題

2。3、如果需要在文字框裡新增placeholder,個人建議使用外掛,將會有和原生瀏覽器一樣的效果。 推薦jquery。placeholder。js 這個外掛

2。4、現在大部分主流瀏覽器都支援bind,很不幸,IE8卻不支援,如果碰到了bind的相容問題,那麼只能自己寫拓展了。

相容IE8需要注意哪些問題

2。5、IE8 IE9均不支援calssList屬性,如果用到了增刪class,那麼只能自己寫拓展。給不支援classList的瀏覽器(ie9以及以下等)的元素新增classList屬性 - 麥兜的部落格 - CSDN部落格

這個部落格上有具體的程式碼,當然你複製下來執行發現會報錯,你需要加上這句程式碼

window。HTMLElement = window。HTMLElement || Element;

因為IE不識別HTMLElement。

2。6、如果你不小心用到了某個jq版本的text()方法,那麼你要注意,有可能IE8不相容,最好使用innerHTML

2。7、IE8並不支援event。target,如果你不小心用了,會報錯 找不到 target 屬性。這就取決於IE8的機制,event只能是window物件的一個屬性,所以我們這樣寫就能相容IE8了;

var

event=window[“event”]; 可以用 event。srcElement獲取你想要的節點物件。