噩夢開始的源頭:之前寫html或者jsp頁面,從來不注意doctype的聲明,也不太明白doctype的作用。
直到最近碰到了一個非常奇葩的bug:某一個頁面在IE7和8,Chrome,ff等下正常,但是在IE9下顯示有問題
我就開始找啊找,各種調試,各種log
終於在httpWatch里邊找到了答案:DOCTYPE未聲明。於是我給頁面添加了<!DOCTYPE html>,果然奏效了。
下面我就盡可能簡潔扼要的說一下DOCTYPE的作用和用法。
1作用:聲明文檔的解析類型(document.compatMode),避免瀏覽器的怪異模式。
document.compatMode:
BackCompat:怪異模式,瀏覽器使用自己的怪異模式解析渲染頁面。
CSS1Compat:標准模式,瀏覽器使用W3C的標准解析渲染頁面。
這個屬性會被瀏覽器識別並使用,但是如果你的頁面沒有DOCTYPE的聲明,那么compatMode默認就是BackCompat
這也就是惡魔的開始 -- 瀏覽器按照自己的方式解析渲染頁面,那么,在不同的瀏覽器就會顯示不同的樣式。
如果你的頁面添加了<!DOCTYPE html>那么,那么就等同於開啟了標准模式
那么瀏覽器就得老老實實的按照W3C的標准解析渲染頁面,這樣一來,你的頁面在所有的瀏覽器里顯示的就都是一個樣子了。
這就是<!DOCTYPE html>的作用。
2 使用:<!DOCTYPE html>
2.1 使用也很簡單,就是在你的html頁面的第一行添加"<!DOCTYPE html>"一行代碼就可以了
2.2 jsp的話,添加在<%@ page %>的下一行。
2.3 不用區分大小寫哦
SO:以后所有頁面都要添加DOCTYPE!