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