mau*_*ris 6 html browser doctype
如果HTML文档有两个doctypes,那么doctypes将如何影响页面的呈现以及浏览器选择哪种doctype?在单个文档中有两个(或更多)doctypes是有效还是混淆?
例:
<!DOCTYPE html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
</html>
Run Code Online (Sandbox Code Playgroud)
只允许一个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>
Run Code Online (Sandbox Code Playgroud)
这显示"CSS1Compat"(=标准模式),而交换doctype声明会导致"BackCompat"(= Quirks模式).