HTML属性的长度是否有限制?

HTML中的属性值需要多长时间?

我在一个新的应用程序中使用了HTML5样式的数据属性( data-foo="bar" ),并且在一个地方存储一个公平的数据(100个字符以上)会非常方便。 虽然我怀疑这个数额没有问题,但它提出了多少太多的问题?


HTML 4

从HTML 4的角度来看,属性是SGML构造。 它们的限制在HTML 4的SGML声明中定义:

         QUANTITY SGMLREF
                  ATTCNT   60      -- increased --
                  ATTSPLEN 65536   -- These are the largest values --
                  LITLEN   65536   -- permitted in the declaration --
                  NAMELEN  65536   -- Avoid fixed limits in actual --
                  PILEN    65536   -- implementations of HTML UA's --
                  TAGLVL   100
                  TAGLEN   65536
                  GRPGTCNT 150
                  GRPCNT   64

这里所讨论的值是“ATTSPLEN”,它是元素属性规范列表(它应该是该元素的所有属性的总大小)的限制。 上面的说明提到应该避免使用固定限制,但是,在大多数实现中,除了可用内存之外,可能没有真正的限制。

HTML 5

正如规范所说,HTML 5似乎有所不同,“因此,此版本的HTML返回到非SGML基础。”

稍后,在描述如何解析HTML 5时,会出现以下内容( 强调添加):

下面描述的算法对所生成的DOM树的深度或者标签名称,属性名称, 属性值 ,文本节点等的长度 没有限制 。虽然鼓励实现者避免任意限制,但认识到实际问题将可能迫使用户代理施加嵌套深度约束。

所以我想这是你的答案。


我刚刚写了一个测试,将一串长度为1000万的字符串放入一个属性中,然后再次检索它,并且它工作正常(Firefox 3.5.2和Internet Explorer 7)

5000万使得浏览器挂着“这个脚本需要很长时间才能完成”的消息。


从HTML5语法文档

9.1.2.3属性

元素的属性在元素的开始标签内表示。

属性有一个名称和一个值。 属性名称必须由空格字符以外的一个或多个字符组成,U + 0000 NULL,U + 0022 QUOTATION MARK(“),U + 0027 APOSTROPHE('),U + 003E GREATER-THAN SIGN(>),U + 002F SOLIDUS(/)和U + 003D EQUALS SIGN(=)字符,控制字符以及任何不由Unicode定义的字符。在HTML语法中,属性名称可以使用任意小写和大写字母组合这是属性名称的ASCII区分大小写匹配。

属性值是文本和字符引用的混合,除了附加限制条件是文本不能包含模糊的&符号。

属性可以用四种不同的方式指定:

  • 空属性语法

  • 未加引号的属性值语法

  • 单引号属性值语法

  • 双引号属性值语法

  • 这里没有提到对属性值大小的限制。 所以我认为应该没有。

    你也可以根据你的文档验证你的文档

    HTML5验证器(高度实验性)

    链接地址: http://www.djcxy.com/p/42161.html

    上一篇: Is there a limit to the length of HTML attributes?

    下一篇: How can i get src alone from Image tag using php?