引言: 在Web應用的開發過程當中,發現若干頁面在360的瀏覽器上顯示不正常,而在其餘的瀏覽器上,皆爲正常狀態,問題出在哪裏呢?html
問題的提出:web
Web頁面在360的瀏覽器上,顯示不正確。 可是在Firefox、chrome和IE8+以上的瀏覽器上,都是顯示正常的。chrome
問題的分析瀏覽器
1. 檢查了一些JavaScript框架,標準的jQuery類庫1.x系列,確認其工做正常,問題不是在於Javascript方面。框架
2. 排查掉HTML標籤內容的顯示 問題。ui
3. 懷疑是CSS在不一樣瀏覽器下的兼容性問題,見過排查,沒有發現問題。.net
4. 排查360瀏覽器,發現其在當前頁面的顯示中,默認使用了IE7的渲染引擎。同時,在IE7的環境下,重現了相似狀況。htm
5. 本質上,這個顯示問題是頁面在IE7下面的兼容性顯示問題。
ip
關於360瀏覽器或搜狗瀏覽器的分析:開發
對於此類瀏覽器,有時候號稱雙核或者N核的高速瀏覽器,其本質上就是本地IE瀏覽器的殼子,外加Chrome抑或Firefox的內核,大部分狀況下都是WebKit系列內核。
那麼,此類瀏覽器依據什麼信息,來判斷頁面的渲染模式呢?答案就是能夠指令運行當前頁面的瀏覽器使用何種渲染引擎的聲明。
<meta http-equiv="X-UA-Compatible" content="IE=8">
這裏,就是指令瀏覽器至少要使用IE8以上的渲染引擎來,渲染頁面,從而規避掉IE7下的問題。
關於Doctype.
<!DOCTYPE> 聲明必須是 HTML 文檔的第一行,位於 <html> 標籤以前。
<!DOCTYPE> 聲明不是 HTML 標籤;它是指示 web 瀏覽器關於頁面使用哪一個 HTML 版本進行編寫的指令。
在 HTML 4.01 中,<!DOCTYPE> 聲明引用 DTD,由於 HTML 4.01 基於 SGML。DTD 規定了標記語言的規則,這樣瀏覽器才能正確地呈現內容。
分析: doctype所要解決的就是使用何種HTML的語法解析器和渲染器。好比特定HTML標籤的使用,則依賴於HTML Doctype的使用。