簡體   English   中英

單個HTML文檔中的多個Doctypes

[英]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的參考頁面:

http://www.w3schools.com/tags/tag_doctype.asp

如果您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM