[英]Multiple Doctypes in a single HTML Document
如果HTML文檔有兩個doctypes,那么doctypes將如何影響頁面的呈現以及瀏覽器選擇哪種doctype? 在單個文檔中有兩個(或更多)doctypes是有效還是令人困惑?
例:
<!DOCTYPE html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
</html>
只允許一個doctype聲明。 這非常直接來自HTML規范以及HTML5草稿,也可以使用驗證器進行檢查。
因此,沒有規定應該發生什么。 自然的期望是,由於瀏覽器在決定瀏覽器模式( Quirks模式與標准模式)時僅在“doctype嗅探”中處理doctype聲明,因此只有第一個doctype聲明生效而另一個被忽略。
這可以通過以下方式進行測試(使用HTML 3.2 doctype,在所有doctype-sniffer瀏覽器上觸發Quirks模式):
<!DOCTYPE HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<title>Testing duplicate doctype effect</title>
<script>
document.write(document.compatMode);
</script>
</html>
這顯示“CSS1Compat”(=標准模式),而交換doctype聲明會導致“BackCompat”(= Quirks模式)。
我相信瀏覽器使用了第一個DOCTYPE
,並且它違反了規范,在文檔中有多個。
我認為(不確定)多個DOCTYPE
-s 可能有效的唯一情況是使用IE條件注釋。 當然,IE以外的瀏覽器不會看到這些瀏覽器。
我記得讀過一篇博客文章(現在找不到,所以我可能錯了)但是一些(大多數?)瀏覽器甚至忽略了DOCTYPE,如果它不是他們遇到的第一件事。 (這可能是一個自那以后得到修復的錯誤。)
這是W3School關於DOCTYPE
的參考頁面:
如果您的HTML頁面中有多個DOCTYPE -s,那么瀏覽器將考慮第一個,瀏覽器逐行解析DOM。 一旦瀏覽器獲得DOCTYPE,它將停止尋找其他文檔類型,並將跳轉到搜索HTML標記。
在上面的問題中首先提到HTML-5 DOCTYPE,然后是HTML-4,根據這個瀏覽器會將內容呈現為HTML-5 doctype
最好在http://www.w3schools.com/中嘗試一次...嘗試使用'code'或'kbd'或'dfn'或'samp'或'strong'標簽,優先提及兩種docty。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.