HTML中的属性值要多长时间?
我在一个新应用程序中使用HTML5样式数据属性(data-foo="bar"
),并且在一个地方存储大量数据(最多100个字符)真的很方便。虽然我怀疑这笔钱是可以的,但它提出了多少是太多的问题?
从HTML 4的角度来看,属性是SGML构造。它们的限制在SGML Declaration of HTML 4中定义:
QUANTITY SGMLREFATTCNT 60-增加了-ATTSPLEN 65536-这些是最大值-LITLEN 65536-声明中允许-NAMELEN 65536-避免实际使用固定限制-PILEN 65536-HTML UA的实现-TAGLVL 100TAGLEN 65536玻璃钢150玻璃钢64
这里要讨论的值是“ ATTSPLEN”,这是元素属性说明列表的限制(应该是该元素所有属性的总大小)。上面的注释提到应避免使用固定限制,但是,在大多数实现中,除了可用内存外,没有其他实际限制。
HTML 5似乎有所不同,正如[C0]所说,“此版本的HTML因此返回了非SGML基础。”
稍后,当描述如何解析HTML 5时,将出现以下段落(添加强调:]
下面介绍的算法无限制关于DOM树的深度生成的,或on of of length标签名称,属性名称,属性值,文本节点等。鼓励实施者避免任意限制,这是公认的实际的担忧可能强制用户代理施加嵌套深度限制。
所以我想这就是你的答案。
我只有the spec,它将长度为10百万]的字符串放入属性,然后再次检索它,并且工作正常(Firefox 3.5.2和Internet Explorer 7)
5000万使浏览器因“此脚本需要很长时间才能完成”消息而挂起。
我真的不认为有任何限制。我知道你现在可以做[]
written a test
来自<a onclick=" //...insert 100KB of javascript code here">
我从未听说过对属性长度的任何限制。
SGML定义的属性限制为65k个字符,请参见此处:http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:
最近在Edge(版本81.0.416.58(64位)中经过测试,数据属性似乎限制为64k。