网站搜索

javascript - 如果文档中未设置 doctype,如何确定它?


假设,作为一个例子,以下精确的 test.html 文档,以 UTF-8 编码保存:

<html>
<head>
    <title>Test</title>
</head>
<body>
    Test document.
</body>
</html>

我如何在 IE11 和最新版 Chrome 中确定浏览器为文档猜测了什么 doctype(如果有的话)?(注意,上述文档只是一个示例,我在寻找的是一种方法来确定浏览器假定的 doctype,而不是针对这个实例的具体答案。(教我如何自己找方法!))

我搜索并找到了这个相关问题,其中的答案提到了 document.doctype,但是在 Chrome 中它是 null,在 IE11 中是 undefined。我也尝试了各种其他搜索,例如这个,但这只能得到关于设置正确 doctype 的帖子。

我已经查看了 Chrome 和 IE11 的开发者工具,但没有找到它(也许只是没看到)。

我已经仔细查看了 Stack Overflow 上所有建议的重复问题,以及侧边栏中的“相似问题”,但都没有完全回答我的问题。

结论:是否可以使用 JavaScript(首选)或浏览器的开发者工具来查明假定的文档模式?或者是否有规范或已知规则可以参考?

答案#1

简短回答:如果未指定文档类型,则没有可用的文档类型。

根据这个答案,浏览器不会假定文档类型,而是进入“怪异模式”:

设置怪异模式的常用方法是不包含文档类型声明,或者在文档类型声明之前包含内容。

(阅读全文以比较三种基本模式。)

你可以在维基百科上找到关于不同文档类型及其触发的模式的概述。它确认如果没有文档类型,所有浏览器都会进入怪异模式。

本帖包含关于如何检查浏览器是否处于怪异模式的信息,主要方法是检查 document.compatMode。