聊一聊瀏覽器的內容

瀏覽器段子

今天翻讀平時工做作的便籤時,注意到了一張瀏覽器內核相關的記錄,盡毫無印象,因而寫下這篇文章:
css

瀏覽器組成

瀏覽器簡單的說由兩部分組成:shell + 內核Shell的含義,簡單地說,就是提供給用戶操做,以便調用內核去實現各類功能的窗口,例如菜單欄、工具欄等等。內核纔是瀏覽器的核心和最重要的。內核是基於標記語言顯示內容的程序或模塊,因此通常也稱內核爲「渲染引擎」(Rendering Engine)。也有一些瀏覽器並不區分外殼和內核。從Mozilla將Gecko獨立出來後,纔有了外殼和內核的明確劃分。目前主流的瀏覽器有IE六、IE八、Mozilla、FireFox、Opera、Safari、Chrome、Netscape等。
html

瀏覽器內核(渲染引擎)

所謂總要發生點什麼印象纔會深入。街上看到一個美女,若是僅僅是擦肩而過,可能一個小時以後就會忘記這件事。但若是發生點什麼,加了微信,那就徹底不同了,也許她就成爲你的知(lao)己(po)了。前端

常見的瀏覽器內核有多個,不一樣內核對網頁編寫語法也不一樣,進而致使同一個頁面在不一樣內核的瀏覽器下顯示出來的效果也會有所出入(前端開發中深惡痛絕的兼容性問題的根本)。下面一塊兒瞭解下內核的進化過程:
git

Trident:

該內核程序在1997年的IE4中首次被採用,是微軟在Mosaic代碼的基礎之上修改而來的,並沿用到IE11,也被廣泛稱做」IE內核」。由於它成熟的接口設計,涌現出了一大批非IE卻採用了該內核的瀏覽器。一家獨大,毫無競爭的舒服日子,並藉着windows系統的東風,IE有至關長的一段時間沒有去更新該內核。致使了兩個後果——一是跟W3C標準的脫節;二是Trident內核的大量 Bug等安全性問題沒有獲得及時解決,而後加上一些致力於開源的開發者和一些學者們公開本身認爲IE瀏覽器不安全的觀點,也有不少用戶轉向了其餘瀏覽器,FirefoxOpera就是這個時候興起的。程序員

常見Trident內核瀏覽器有:IE、 360安全瀏覽器、獵豹瀏覽器,360極速瀏覽器、傲遊瀏覽器、搜狗高速瀏覽器、UC瀏覽器等。部分是雙核瀏覽器,有一個是Trident,增長一個其餘內核。因而瀏覽器有「兼容模式」和「標準模式」,用戶能夠隨意切換。es6

Gecko:

Netscape6開始採用的內核,後來的Mozilla FireFox(火狐瀏覽器) 也採用了該內核,Gecko的特色是代碼徹底公開,所以,其可開發程度很高,全世界的程序員均可覺得其編寫代碼,增長功能。由於這是個開源內核,所以受到許多人的青睞,Gecko內核的瀏覽器也不少,這也是Gecko內核雖然年輕但市場佔有率可以迅速提升的重要緣由。github

事實上,Gecko引擎的由來跟IE不無關係,前面說過IE沒有使用W3C的標準,這致使了微軟內部一些開發人員的不滿;他們與當時已經中止更新了的 Netscape的一些員工一塊兒創辦了Mozilla,以當時的Mosaic內核爲基礎從新編寫內核,因而開發出了Gecko。不過事實上,Gecko 內核的瀏覽器仍然仍是Firefox (火狐) 用戶最多,因此有時也會被稱爲Firefox內核。此外Gecko也是一個跨平臺內核,能夠在Windows、Linux和Mac OS X中使用。shell

Gecko內核常見的瀏覽器:Mozilla Firefoxwindows

Presto:

Opera12.17及更早版本曾經採用的內核,現已中止開發並廢棄,該內核在2003年的Opera7中首次被使用,該款引擎的特色就是渲染速度的優化達到了極致,然而代價是犧牲了網頁的兼容性瀏覽器

實際上這是一個動態內核,與前面幾個內核的最大的區別就在腳本處理上,Presto有着天生的優點,頁面的所有或者部分都可以在迴應腳本事件時等狀況下被從新解析。此外該內核在執行Javascrīpt的時候有着最快的速度,根據在同等條件下的測試,Presto內核執行同等Javascrīpt所需的時間僅有Trident和Gecko內核的約1/3(Trident內核最慢,不過二者相差沒有多大)。只惋惜Presto是商業引擎,使用Presto的除開Opera之外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770網絡瀏覽器等,這很大程度上限制了Presto的發展。Opera現已改用Google Chrome的Blink內核。

Webkit:

Webkit是蘋果公司本身的內核,也是蘋果的Safari瀏覽器使用的內核。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來,它們都是自由軟件,在GPL條約下受權,同時支持BSD系統的開發。因此Webkit也是自由軟件,同時開放源代碼。在安全方面不受IE、Firefox的制約,因此Safari瀏覽器在國內仍是很安全的。

Google Chrome、360極速瀏覽器以及搜狗高速瀏覽器高速模式也使用Webkit做爲內核(在腳本理解方面,Chrome使用本身研發的V8引擎)。WebKit 內核在手機上的應用也十分普遍,例如 Google 的手機 Gphone、 Apple 的iPhone, Nokia’s Series 60 browser 等所使用的 Browser 內核引擎,都是基於 WebKit。

WebKit內核常見的瀏覽器:傲遊瀏覽器三、Safari (Win/Mac/iPhone/iPad)、Android 默認瀏覽器。

Blink:

一個由Google和Opera Software開發的瀏覽器排版引擎,Google計劃將這個渲染引擎做爲Chromium計劃(Chromium瀏覽器是谷歌爲發展自家的瀏覽器Chrome而開啓的計劃,因此Chromium至關於Chrome的工程版或稱實驗版)的一部分,而且在2013年4月的時候公佈了這一消息。這一渲染引擎是開源引擎WebKit中WebCore組件的一個分支,而且在Chrome(28+)、Opera(15+)中使用。

JS引擎

JavaScript最初由網景公司的Brendan Eich設計,是一種動態、弱類型、基於原型的語言,內置支持類。以它爲基礎,制定了ECMAScript標準。JavaScript在瀏覽器的實現中還必須含有DOM和BOM。Web瀏覽器通常使用公共 API來建立主機對象來負責將DOM對象反射進JavaScript。

下面看看ES5和ES6在各大主流瀏覽器上的支持狀況:

ES5兼容狀況

注:上圖詳細地分析了瀏覽器的JS引擎以及對ES5語法的支持狀況。圖太大了,可能看不清楚。看不清楚的童鞋點擊瀏覽器兼容ES5明細

ES6兼容狀況
ES6的狀況比較複雜,想了解的童鞋一樣點擊 瀏覽器兼容ES6明細

主流瀏覽器默認樣式

說完了JS,那麼更讓人咬牙切齒的來了——CSS兼容性。具體各大瀏覽器對本身默認樣式的設置參考各主流瀏覽器標籤默認樣式,熟悉這個之後遇到樣式兼容性問題都直接秒殺啦!

相關文章
相關標籤/搜索