如何解決前端遇到的兼容問題?
看到現在面試很多時候都要求能解決兼容問題。不知道實際是要解決哪些問題?然後又在哪裡能找到答案?
謝邀。
前端兼容問題就是瀏覽器兼容問題,不同瀏覽器對於同樣HTML、CSS、JavaScript的行為不一樣(實際上,有的瀏覽器對於HTTP消息的header也會有不同處理,只是這種情況較少)。
瀏覽器兼容問題多了去了,不是一句兩句話能講得完的,而且很多東西都是很古怪很沒有道理的,不過,為了應付面試,基本上要明白這些也差不多夠:
- 絕大多數瀏覽器兼容性問題都是針對IE的,因為現在瀏覽器江山除了微軟那套基本上都被webkit/blink那一套統治了;
- 最好使用現成的模板和工具來客服瀏覽器兼容,而不是自己一點一點摳;
- 遇到兼容性問題,利用搜索引擎來搜,基本上前人都趟過坑;
- 要是發現前人沒有趟過的坑,最好就繞過去,不要硬剛;
- IE真的爛。
差不多就是。
了解更多前端只是請關注 @程墨Morgan
引起兼容性問題一般是:早期瀏覽器的 css 、dom 兼容性,瀏覽器未支持的 html5 api、css3 屬性、es5、es6 特性
遇到具體的問題:
- 調試定位。定位到引起問題的代碼,可能是一個js方法,可能是一條css屬性。
- 確認剛剛定位到的方法或屬性的兼容性。我一般去 mdn 或 caniuse 。
- 解決問題。可能要使用替代方法,或加 polyfill,或針對不同的瀏覽器使用不同的方法,或針對極特殊的情況 hack 等。
不請自來,瀏覽器的兼容性實質就是不同瀏覽器廠商對於html,css以及js處理不一樣(實際上絕大部分是一致的),這裡又要扯到HTTP1---HTTP5各種協議以及規則的制定了,一兩句話也說不清楚,題主可以在乎找到答案。作為處中級前端開發人員來說,碰到所謂的兼容性問題其實也就是解決IE,6,7,8,9的兼容性問題(比如頁面布局,js對象封裝,ajax什麼的)。不可能你在一個項目裡面就會碰到所以的兼容性問題,其實也只是碰到一個坑就找搜索引擎查找相關答案,都會找到答案的。
謝邀。
個人認為,這個還是需要分工作年限來討論的,如果是面五年以上的前端,問這個問題並沒有什麼意義,低估了你的水平也拉低了公司的定位。
如果面對的是工作年限不久的前端工程師,被問到兼容性的問題,我覺得面試官應該更多的是在考察你發現並解決一些突發問題的能力,從你的回答中也可以看出你的一些項目經歷,到底是紙上談兵,還是從實戰中摸爬滾打過來的,一問便知。
我的建議是,學會講故事。將你平時遇到的並且總結出的一些兼容性的問題,通過故事的方式描述出來。
兼容性問題說到底,其實是一種在實戰項目中的經驗積累,出於這一點考慮,面試官想得到的答案無非兩種:
- 你是否善於總結問題,你解突發決問題的能力怎樣?
- 你的項目經歷是否豐富,是否踩過並填過足夠多的坑?
對於第一點的要求,講故事就能很好的應付:你在日常的項目里,demo里,或多或少肯定碰到過一些兼容性問題,你是怎麼碰到的?碰到的時候反應如何?然後是怎樣排查出問題所在的?最後通過怎樣一種方式解決?最後坑填上了,得出怎樣的總結?
我想你用這樣一種方式來描述出來,總比在網上隨便背兩條兼容性的題目,然後硬答一波來的更加真實和令人信服。
對於第二點要求,如果你經驗不足,兼容性實在不是你的強項,沒關係,學會引導面試官,將他的問題從你不擅長的方向引導向你擅長的方向,前端能問的問題實在太多了,從被問爛了的閉包作用域原型繼承,到自動化部署發布,總有一個你擅長的方向。說實話,兼容性只是前端面試中很小的一塊,如果面試官真的在這上面和你死纏爛打,這個公司不去也罷。
最後,關於兼容性本身,其實現在很多html5 css3的兼容性都不需要太過擔心了,瀏覽器都支持它們中的大多數,實在不行加hack或前綴,只要是在web端出現的兼容問題都好解決。
最噁心的是適配TM的移動端,花式Bug,PC上的Chrome移動端調試工具很多問題根本調不出來,,如果你啥好的調試移動端的工具別忘了介紹給我,謝了~
謝邀
我只說個大方向好了(因為好多詭異的解決方法都忘記怎麼弄了)
1.層級關係
ie瀏覽器的老瀏覽器和新瀏覽器是對層的處理有所不同例如z index有所不同,老版本ie會檢查父屬性,新版本只看當前的,還有overflow的bug也是這個問題2關於ajax
由於ajax在ie6上面是activexobject組件,所以沒有xmlhttprequest3關於盒子模型
這個主要是padding margin對ie之類的處理公式的不同 這個現象chrome和firefox也有4關於浮動
例如ie6對fixed的不支持手機打的。。。推薦閱讀: