DOCTYPE 必须为 且位于文档首行,否则触发怪异模式;document.compatMode 返回 "BackCompat" 即为怪异模式,"CSS1Compat" 才是标准模式。

省略 DOCTYPE 不是“老式写法”,而是明确触发怪异模式(Quirks Mode)的错误操作——它会让浏览器回退到 IE5 时代的非标准解析逻辑,直接导致盒模型、字体继承、表格对齐等行为异常。
为什么没写 DOCTYPE 就进怪异模式
浏览器不是靠“版本判断”来决定模式,而是靠“是否存在有效声明”做开关。只要第一行不是 (或极少数兼容旧标准的完整声明),就默认启用怪异模式。
-
document.compatMode返回"BackCompat"即为怪异模式,"CSS1Compat"才是标准模式 - HTML5 规范里
的唯一作用就是“告诉浏览器:请按现代标准渲染”,不校验 DTD,不区分大小写,但必须全小写、无前置空格/注释/XML 声明 - 哪怕只多一个空格:
,IE6–8 就会进怪异模式;XML 声明 <code><?xml version="1.0" encoding="utf-8"?>放在DOCTYPE前也会触发(尤其 IE6)
写错的常见形式
看似写了,实则无效——这些写法都会让浏览器放弃标准模式:
(全小写但首字母未大写?其实合法,但部分旧工具链误判;真正问题在大小写混合如 <code>)(全大写在多数现代浏览器 OK,但某些嵌入式 WebView 或老旧测试环境可能不认)(带空 PUBLIC,或引号内缺 URL,属于不完整声明)<!-- comment -->(注释在前,哪怕只是 <code>










