您的里程將根據瀏覽器的版本有所不同,但這裏的它的短:
據我所知,瀏覽器不真正去任何努力來獲取和利用DTD的URL或以任何方式驗證代碼。因此,您的網頁在沒有文檔類型聲明的情況下工作「很好」,破損的文檔類型聲明以及許多其他破碎的表單。
當不通過驗證程序運行代碼時,在代碼頂部提供doctype定義的主要原因是將瀏覽器從怪癖模式拖入標準遵從模式,ala歷史災難與IE < 7。 ..
它的範圍之外一點點的怪癖和標準模式講座在這裏,所以好奇應該頭部到維基百科: http://en.wikipedia.org/wiki/Quirks_mode
Web瀏覽器使用自己比較亂的標準切換基於doctype的模式。你可能遇到的是當你的DTD缺少URL時怪異模式中的IE和當你添加URL時標準模式。
您應該儘量包括完整的聲明,包括URL,並通過W3C驗證程序[1]運行您的代碼以獲得更好的效果。
修復有效代碼和完整文檔類型[2]的渲染問題。怪癖模式只是爲了向後兼容,所以無人維護的網站將盡可能長時間地繼續渲染。
如果您的網頁只能在怪癖模式下按預期進行渲染,您的網頁損壞。
旁註:你應該認真問,爲什麼要在2013年用4.01過渡
[1] http://validator.w3.org/
[2] http://www.w3.org/QA/2002/04/valid-dtd-list.html
首先,非常感謝您的回答,@Kiirani。我正在開發一個大約在10年前開發的遺留Web項目,因此您知道我無法避免使用4.01過渡文檔,因爲它始終在整個網站的頁面模板中定義。 – 2013-02-19 08:49:58
我剛剛創建了一個靜態html,並測試了你提到的IE的可能行爲,你說得對。如果缺少DTD URL,IE處於怪異模式,否則處於標準模式。我的測試是在IE8中。 但是,現在,我無法修改doctype以包含URL,因爲它會破壞頁面呈現,尤其是表格元素... – 2013-02-19 09:15:57