<!DOCTYPE html[]> 的奇怪 ui-grid 错误

Odd ui-grid bug with <!DOCTYPE html[]>

我遇到了似乎是 Angular 的 ui-grid 中的错误。我的 index.html 页面顶部有这个:

<!DOCTYPE HTML[]>

当我运行应用程序时,页面的网格滚动列headers:

现在,如果我删除括号,如下所示:

<!DOCTYPE HTML>

网格正确显示:

有人解决过这个问题吗?有修复吗?

注意:我可以删除括号并将其保留在那里,但我们的部署工具会在部署时修改 index.html 文件并添加括号,因为这显然是 well-formed HTML.

"Well-formed"是一个只有在XML才有意义的概念。粗略地说,这意味着每个元素都有一个显式的开始标记和一个显式的结束标记,并且它们位于正确的位置。与Doctype声明的内容无关

HTML 规范的最新版本说:

A DOCTYPE must consist of the following components, in this order:

  1. A string that is an ASCII case-insensitive match for the string "
  2. One or more space characters.
  3. A string that is an ASCII case-insensitive match for the string "html".
  4. Optionally, a DOCTYPE legacy string or an obsolete permitted DOCTYPE string (defined below).
  5. Zero or more space characters.
  6. A ">" (U+003E) character.

... 所以您的部署工具所做的更改既不 "well-formed" 也不正确。

以这种方式破坏 Doctype 会触发 Quirks Mode。这使得浏览器通过模拟 1990 年代后期的许多错误来向后兼容它们。

CSS 正在中断,因为它取决于那些不存在的错误。

可能 重写所有 CSS 所以它被设计成在 Quirks 模式下工作,但是修复部署工具所以它不会破坏 Doctype 会变得更好。