作web瀏前端,覽器兼容性天然是避免不了了。javascript
1.爲何會出現瀏覽器兼容性?css
瀏覽器種類繁多(內核不同),且相同瀏覽器版本衆多,所以各瀏覽器對標準的實現不太同樣,就致使了對網頁解析的結果不一致。因此就出現了所謂的兼容性問題。html
2.瀏覽器兼容性主要體如今三個方面:html、css、javascript.前端
1)html兼容性。http://i.cnblogs.com/EditPosts.aspx?postid=4756620html5
瀏覽器渲染引擎對html支持不太同樣。高版本的瀏覽器能夠識別解析(html5)新標籤,低版本瀏覽器沒法識別解析這些新標籤。java
2)JavaScript兼容性jquery
js自己沒有差別,主要是對dom節點及window對象及其屬性上有差別。比較好的建議是使用第三方js庫,好比jquery等,這些考慮了瀏覽器兼容性,本身能夠少考慮些。web
列出一些常見的js兼容性問題,ajax
2-1)事件綁定時的事件處理函數不一樣。標準實現用的是addEventListener/removeEventListener();IE用的是attachEvent/detachEvent()瀏覽器
2-2)事件流機制不一樣。標準實現爲捕獲--目標--冒泡;ie事件流爲冒泡,也就是不支持捕獲。
2-3)event對象的獲取及對應的屬性不太同樣
標準中event對象做爲參數傳入,ie中做爲window屬性經過window.event訪問。
另外就是幾個關鍵屬性不一致。target/srcElement;stopPropagation/cancelBubble=true;
stopDefault/returnFalse=true;
2-4)ajax實現上有些差別。
xmlhttp對象的建立不同.標準是new XMLHttpRequest();ie是new ACTIVEXObject(‘MICROSOFT’).
2-5)瀏覽器對獲取DOM節點和子節點的方法的實現不一致。
以上是學習中碰到比較多的js兼容性問題,後續會根據學習狀況不斷補充。
3)css兼容性
css兼容性比較麻煩,對此會有一些專門的技巧。好比css hack,ie的條件註釋,reset.css重置瀏覽器默認屬性值。
3-1)
3,針對兼容性的解決方案,大體有這些,
css hack,reset.css,normalize.css,使用框架或引入庫
想了解更多兼容性問題,請戳這裏http://www.w3help.org/zh-cn/causes/