HTML中的属性值有多长时间?
我data-foo="bar"
在一个新的应用程序中使用HTML5样式的数据属性(),在一个地方存储数据的公平数据(超过100个字符)真的很方便.虽然我怀疑这个数量很好,但它提出了多少太多的问题?
从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因此返回到非SGML基础."
稍后,在描述如何解析HTML 5时,会出现以下段落(强调添加):
下面描述的算法 对生成的DOM树的深度或标签名称,属性名称,属性值,文本节点等的长度没有限制.虽然鼓励实现者避免任意限制,但是认识到实际问题可能会强制用户代理施加嵌套深度约束.
所以我想这是你的答案.
我刚刚写了一个测试,它将一个长度为1000万的字符串放入一个属性然后再次检索它,它运行正常(Firefox 3.5.2和Internet Explorer 7)
5000万使浏览器挂起"这个脚本需要很长时间才能完成"的消息.