做前端開發的程序員一定要熟悉各種瀏覽器的內核,以了解各種瀏覽器的兼容性,瀏覽器自帶的特性,這樣才能做出更好的兼容性設計以及代碼撰寫。
瀏覽器的種類,如果按照生產商的品牌分,不說數以萬計,起碼也有成百上千種了, 如果按瀏覽器核心分類,它的種類就會少的多。 當今瀏覽器核心的種類值得一體的大約只有三到四個,它們分別是:Trident、Gecko、WebKit和Presto。 乍一看,似乎都很陌生,其實並不然,只要你上過網,就至少用過其中一種瀏覽器核心的瀏覽器軟件,因為它們的市場占有率的確是太高了。
一、Trident核心,代表產品Internet Explorer
說起Trident,很多人都會感到陌生,但提起IE(Internet Explorer)則無人不知無人不曉,由於其被包含在全世界使用率最高的操作系統Windows中,得到了極高的市場占有率,所以我們又經常稱其為IE核心。 Trident(又稱為MSHTML),是微軟開發的一種排版引擎。它在1997年10月與IE4一起誕生,至今經歷12年,至少更新了四個版本,雖然它相對其它瀏覽器核心還比較落后,但Trident一直在被不斷地更新和完善。而且除IE外,許多產品都在使用Trident核心,比如Windows的Help程序、RealPlayer、Windows Media Player、Windows Live Messenger、Outlook Express等等都使用了Trident技術。 但並不是所有的IE都使用Trident引擎,微軟還有另一個網頁瀏覽器排版引擎,叫做Tasman,它是使用在Internet Explorer for Mac的排版引擎,即蘋果版的IE引擎。 使用Trident引擎的瀏覽器有很多,比如Internet Explorer、Maxthon遨游、世界之窗、騰訊TT、Netcapter、Avant等等,但Trident只能應用於Windows平台,且是不開源的。
二、Gecko核心,代表作品Mozilla Firefox
Gecko也是一個陌生的詞,但Firefox的名聲應該已經有所耳聞,Gecko是一套開放源代碼的、以C++編寫的網頁排版引擎。 目前為Mozilla家族網頁瀏覽器以及Netscape 6以后版本瀏覽器所使用。這軟件原本是由網景通訊公司開發的,現在則由Mozilla基金會維護。它的最大優勢是跨平台,能在Microsoft Windows、Linux和MacOS X等主要操作系統上運行,而且它提供了一個豐富的程序界面以供互聯網相關的應用程式使用,例如網頁瀏覽器、HTML編輯器、客戶端/服務器等等。 Gecko是最流行的排版引擎之一,僅次於Trident。使用它的最著名瀏覽器有Firefox、Netscape6至9。
三、WebKit核心,代表作品Safari、Chrome
webkit 是一個開源項目,包含了來自KDE項目和蘋果公司的一些組件,主要用於Mac OS系統,它的特點在於源碼結構清晰、渲染速度極快。主要代表作品有Safari和Google的瀏覽器Chrome。
四、Presto核心,代表作品Opera
Presto是由Opera Software開發的瀏覽器排版引擎,供Opera 7.0及以上使用。它取代了舊版Opera 4至6版本使用的Elektra排版引擎,包括加入動態功能,例如網頁或其部分可隨着DOM及Script語法的事件而重新排版。 Presto在推出后不斷有更新版本推出,使不少錯誤得以修正,以及閱讀Javascript效能得以最佳化,並成為速度最快的引擎,這也是Opera被公認為速度最快的瀏覽器的基礎。
五、擴展閱讀-殼子瀏覽器 俗話就是換了外殼包裝下出來忽悠的瀏覽器
現在還有很多殼子瀏覽器,自己本身不帶內核,而是直接調用本機其他瀏覽器的內核,來實現瀏覽的功能。由於IE瀏覽器在國內的普及率非常高,所以造成了很多網上銀行和支付系統只支持IE的Trident內核,其他瀏覽器訪問根本無法進行正常支付和轉賬等業務。很多瀏覽器開發商就運用了殼子瀏覽器的特性推出了“雙核”瀏覽器,帶有兩種瀏覽模式,其原理就是本身帶一內核,開啟兼容模式后,調用本機上的ie內核,來實現雙引擎功能。其中代表產品有搜狗瀏覽器、傲游3、QQ瀏覽器等。這種瀏覽器的好處在訪問支付寶或者網上銀行的時候,使用Trident內核的“兼容模式”來進行業務。這樣一個瀏覽器多個內核,滿足同一用戶的不同需求。
內核只是一個通俗的說法,其英文名稱為“Layout engine”,翻譯過來就是“排版引擎”,也被稱為“頁面渲染引擎”。它負責取得網頁的內容(HTML、XML、圖像等等)、整理信息(例如加入CSS等),以及計算網頁的顯示方式,然后會輸出至顯示器或打印機。所有網頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網絡內容的應用程序都需要排版引擎。
不同的瀏覽器內核對網頁編寫語法的解釋也有不同,因此同一網頁在不同的內核的瀏覽器里的渲染(顯示)效果也可能不同,這也是網頁編寫者需要在不同內核的瀏覽器中測試網頁顯示效果的原因。
六、簡單總結
1、使用Trident內核的瀏覽器:IE、Maxthon、TT、The World等;
2、使用Gecko內核的瀏覽器:Netcape6及以上版本、FireFox、MozillaSuite/SeaMonkey;
3、使用Presto內核的瀏覽器:Opera7及以上版本;
4、使用Webkit內核的瀏覽器:Safari、Chrome。