引言: 在Web應用的開發過程當中,發現若干頁面在360的瀏覽器上顯示不正常,而在其它的瀏覽器上。皆爲正常狀態,問題出在哪裏呢?html
問題的提出:jquery
Web頁面在360的瀏覽器上,顯示不對。 但是在Firefox、chrome和IE8+以上的瀏覽器上,都是顯示正常的。web
問題的分析chrome
1. 檢查了一些Javascript框架。標準的jquery類庫1.x系列,確認其工做正常,問題不是在於Javascript方面。瀏覽器
2. 排查掉HTML標籤內容的顯示 問題。框架
3. 懷疑是CSS在不一樣瀏覽器下的兼容性問題。見過排查,沒有發現問題。post
4. 排查360瀏覽器。發現其在當前頁面的顯示中,默認使用了IE7的渲染引擎。ui
同一時候,在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的使用。