前端三十|16. [FE] 為何會有瀏覽器差異?怎麼處理?

Schaos
Schaos’s Blog
Published in
8 min readOct 2, 2019

--

在本系列文的前兩週,我們深入認識了 HTML、CSS、JavaScript 這前端三兄弟中的許多細節,過程中筆者也提到了數次瀏覽器差異可能會造成的影響;今天再提供一個 瀏覽器差異的範例,明明在同一個網頁,同樣的 CSS 設定,在不同瀏覽器中卻有截然不同的顯示效果:

上圖為 OS X 中的 Safari 及 Chrome 的顯示結果

是不是很神奇?但為什麼一樣是瀏覽器,卻會有這麼大的差異呢?

本系列文已經重新編校彙整編輯成冊,並正式出版囉!

前端三十:從 HTML 到瀏覽器渲染的前端開發者必備心法好評販售中!

喜歡我文章內容的讀者們,歡迎您前往購買支持

差異的來源

這就要從瀏覽器大戰開始說起了。

由於瀏覽器是使用者探索網路的入口,從 1990 年代開始,各家廠商都依據當時的 HTML 規範,實作出了瀏覽器;脫穎而出的兩強分別為市場的先驅者網景 Netscape Navigator,以及壟斷個人電腦作業系統的微軟 Internet Explorer;為了搶佔更高的市佔率,兩家公司都開始實作標準外的功能,甚至忽視當時的標準、設計個別專屬的格式,迫使當時的開發者必須在網頁上標註「用 ___ 瀏覽器方可得到最佳瀏覽效果」,如此的行為又更強化了標準分歧。最終微軟挾帶豐富的功能及龐大財力,擊敗網景,結束了第一次瀏覽器大戰。

後續的瀏覽器大戰內容我就不贅述了,有興趣的讀者可以自行 Google,相信能輕易找到許多當時的紀錄 & 鄉野奇談;但從第一次瀏覽器大站的故事就能反映出,瀏覽器差異的根源,就在於「規範與實作之間的差距」。

規範與實作

瀏覽器的實作必須遵從幾個單位的規範:

  • ECMA:制定標準的 ECMAScript,這也就是 ES6 名稱的由來:ECMAScript 6
  • W3C:全球資訊網協會,負責制定網頁內容的標準,包含 HTML、CSS、DOM、XML 等等

ECMAScript 是標準,JavaScript 是標準的一種實現,雖然口語上時常混用,但還是提醒讀者要稍微留心,不要搞混囉!

這些標準制定組織,會在與社群反覆討論的過程中,逐漸更新標準;例如你可以到 TC39 的 Github 頁面 ,觀看最新被提出來的 ECMAScript…

--

--