在代碼相同的情況下,為什麼 IE 10 的展現效果與 Chrome 和 火狐不同?

這實在是網頁開發長久以來的弊病,IE6老早了,就不說了,可是IE10依然如此,就想不通了。
微軟為什麼不統一IE與其他瀏覽器的視覺效果?


額……我可以湊個趣么,@yukirock也沒有說到點子上。關鍵的問題在「標準」。

目前Web標準主要由W3C在做,也就是「HTML」標準和CSS標準以及一些其他的一系列。理論上講,所有的瀏覽器都要遵從這套標準,在對同一套代碼的執行中,效果才會一致。

但是……恩,但是……在實際執行中,各大瀏覽器都會玩點自己的花活,其目的么。我們從光明的角度講,就是為了提供更好更炫更流暢的瀏覽體驗。最著名的例子就是IE的Activex控制項,目前還被中國網銀牢牢的依賴著。陰暗的角度我就不講了,我只相信光明……

目前,最流行的標準是HTML5。這個標準的推動者應該是Google和蘋果之類(請參看補充),光明的角度講是為了提供新一代互聯網瀏覽體驗……陰暗的我就不講了……藉助龐大的技術、資金,以及互聯網影響力,HTML5標準迅速普及,後來微軟和Adobe沒有辦法,都表示會支持。這就是IE9、IE10的巨大變化的來源。

但是,恩,又是但是……HTML5標準還遠遠沒有完善,這裡有一個HTML測試網站,大家可以看一下。The HTML5 test 這個網站可以測試你的瀏覽器對HTML5的支持程度,沒人滿分。而且它的標準也不斷在調整。

這種情況下,要求IE10跟誰誰誰一樣,是不現實而且沒道理的。就像當年IE是老大,很多人希望FF的表現和IE一樣是沒道理的。

順便說一下:現在活著的內核有IE的啥內核來的,名字忘了。Firefox的啥內核來的,還有一個就是Webkit,目前被蘋果Safari(Webkit老東家)、GoogleChrome(Webkit的覬覦著)、Opera(前幾天剛剛轉換門庭)使用。還有一大堆雜魚,比如國內的傲遊……

從歷史看,內核不同,必然會影響表達效果,所以,忍忍吧,直到剩下一個那一天……

-------------補充---------
評論中,David給出的重要補充
說到HTML5 的話,並不是說Google和apple是標準的推動者,微軟是迫於無奈才加入什麼的。而是因為HTML5最初的標準制定是w3c和WHATWG兩個組織共同合作制定,後來因為理念不同分化。Google,火狐和蘋果支持WHATWG,微軟支持W3C,所以有些效果不同。至今HTML5的標準還沒有完全確定和完善。
顯示不同是因為支持的組織,推動的標準不同。


作為一名前端愛好者和學習者,希望我的愚見能對大家有所幫助。


內核
瀏覽器內核差異是瀏覽器兼容性問題產生的根本原因。
幾款常見瀏覽器的渲染引擎和腳本引擎:

內核是瀏覽器的大腦,它決定瀏覽器的思維方式。
內核不同,瀏覽器的工作模式就不同,因此對代碼的解析,腳本行為等產生影響。例如:不同瀏覽器對於css樣式表的解析方式也會不同,導致樣式布局產生差異,同時對於DOM的實現也不同,導致前端工作量的不同。
關於瀏覽器工作模式的問題可以參考一下這裡:Activating Browser Modes with Doctype

Web標準
我們所熟知的Web標準很多的,所以說Web標準其實是一系列標準的集合。每個WebPage的三部分(Structure,Presentation,Behavior)都分別對應著各自的標準。XHTMLXML對應Structure,CSS對應Presentation,W3C DOMECMAScript等對應Behavior。
由於標準在不斷更新進步,不同瀏覽器對標準的支持程度也不同(同款瀏覽器不同版本,對標準的支持也有不同),所以瀏覽器在進行代碼解析時也會出現差異。

綜上兩方面可以粗略的說明瀏覽器兼容性的問題所在,但我覺得關於瀏覽器兼容性問題其實是很複雜的,還需要進一步學習研究。最後,寫幾條前端開發前輩們總結的小建議,以此減少或避免瀏覽器兼容性問題的發生。

  • 規範(規範使用標籤、屬性,遵循書寫順序、命名規範、單位)
  • 避免減少使用hack
  • 用JS模仿一些IE不支持的CSS標準也是可以的

相同的油,加到不同的車裡,效果不一樣

因為引擎不一樣


推薦閱讀:

Google 的廣東話輸入法(Chrome 擴展)體驗如何?

TAG:Google Chrome | 前端開發 | 火狐瀏覽器(Firefox) | Internet Explorer |