奇怪的ui-grid bug

时间:2016-08-08 14:57:41

标签: html angularjs angular-ui-grid

我在Angular的网格中遇到了一个似乎是个错误的东西。我的index.html页面位于顶部:

<!DOCTYPE HTML[]>

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

enter image description here

现在,如果我删除括号,就像这样:

<!DOCTYPE HTML>

网格显示正确:

enter image description here

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

注意:我可以删除括号并保留它,但我们的部署工具会在部署时修改index.html文件并添加括号,因为它显然是格式良好的HTML。

1 个答案:

答案 0 :(得分:2)

“格式良好”是一个仅在XML中有意义的概念。粗略地说,这意味着每个元素都有一个显式的开始标记和一个显式的结束标记,并且它们位于正确的位置。它与Doctype声明的内容无关。

最新版本的HTML规范说:

  

DOCTYPE 必须按以下顺序组成:

     
      
  1. 字符串,它是字符串的ASCII不区分大小写的匹配项“   
  2. 一个或多个空格字符。
  3.   
  4. 字符串,它是字符串“html”的ASCII不区分大小写匹配。
  5.   
  6. (可选)DOCTYPE旧版字符串或过时的DOCTYPE字符串(定义如下)。
  7.   
  8. 零个或多个空格字符。
  9.   
  10. A“&gt;” (U + 003E)角色。
  11.   

...因此,您的部署工具所做的更改既不是“格式良好”,也不是正确的。

以这种方式打破Doctype会触发Quirks Mode。这使得浏览器通过模拟它们所具有的许多错误而向后兼容20世纪90年代后期的浏览器。

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

可能重写所有CSS,因此它被设计为在Quirks模式下工作,但修复部署工具使其不会破坏Doctype会更好。