什麼是雙核瀏覽器
雙核瀏覽器支援使用兩個或者以上的瀏覽器引擎來渲染網頁,目前絕大多數國產瀏覽器均為雙核甚至多核。
雙核到底是什麼核心
- 基於Chromium的Blink/Webkit核心。一般在國產瀏覽器中被稱為“極速核心/極速模式”。該核心隨著該瀏覽器的更新而更新。
- IE核心。一般在國產瀏覽器中被稱為“IE核心/相容模式”,是指呼叫Windows系統中內建的IE,並非該瀏覽器單獨內建了一套IE,該核心隨著Windows或者IE的更新而更新。
唯一的例外情況是2012年360安全瀏覽器曾經推出內建IE的版本
IE核心的相容模式
某些國產瀏覽器在“IE核心”下,可以切換其“相容模式”,這並不是切換不同的IE核心版本,而是通過呼叫系統中IE核心的不同“文件模式”來實現的,詳細的資訊請參閱這裡。這可能造成一些問題。比如A使用者系統中安裝了IE8,使用QQ瀏覽器的“相容模式 - 7”;B使用者系統中安裝了IE11,也使用QQ瀏覽器的“相容模式 - 7”,雖然都用的同一個瀏覽器且選擇了同一個相容模式,但是對於html5表單項等諸多DOM細節,有著很大的差異。
如何配置網站要使用的渲染引擎
在html的<head>
標籤中加入如下程式碼:
<!DOCTYPE html>
<html>
<head>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
... 以下程式碼省略
複製程式碼
這裡我們一共新增了三條有關瀏覽器渲染方面的指令:
<meta name="renderer" content="webkit">
中的webkit
指令,可以讓QQ、傲遊、360等瀏覽器預設使用Chromium核心渲染頁面。X-UA-Compatible
中的IE=edge
指令,可以讓IE或者呼叫IE核心的瀏覽器,使用標準模式渲染網頁,注意這裡和“Edge瀏覽器”無關,只是恰巧重名罷了。X-UA-Compatible
中的chrome=1
指令,可以讓安裝了GCF外掛的IE,在開啟網頁時使用Chromium核心渲染頁面。
需要注意幾個重要的神坑:
<meta>
標籤必須出現在<head>
內的頂部,否則瀏覽器可能無法識別。<!DOCTYPE html>
文件型別宣告必須寫,否則各種瀏覽器核心均會以“IE5模式(又稱作怪癖模式、quirks模式)”渲染網頁。- 測試效果時,網站必須以域名訪問,內網或者本地地址方式可能對部分瀏覽器無效。
- 如果使用者曾經自主選擇過渲染引擎,瀏覽器將記住這個選擇,它的優先順序高於我們的指令。如果測試時不小心點了,在必要的情況下需要解除安裝瀏覽器並清空使用者資料,然後重灌。
- 應該儘量保證整站的渲染核心一致,以便避免核心切換可能帶來的cookie丟失問題。
通過js判斷當前瀏覽器核心及文件模式
<script src="//gucong3000.github.io/browser.js/browser.min.js"></script>
<script>
if (browser.MSIE) {
alert("系統IE版本:" + browser.rv + "\n文件模式:" + browser.MSIE);
} else if (browser.Edge) {
alert("Edge核心瀏覽器");
} else if (browser.Webkit) {
alert("Blink/Webkit核心的瀏覽器");
} else if (browser.Gecko) {
alert("Gecko核心的瀏覽器");
}
</script>
複製程式碼