HTML属性的长度有限制吗?
在HTML中,属性值的长度有多长HTML属性的长度有限制吗?,html,custom-data-attribute,Html,Custom Data Attribute,在HTML中,属性值的长度有多长 我在一个新的应用程序中使用HTML5风格的数据属性(datafoo=“bar”),在一个地方存储大量数据(最多100个字符)会非常方便。虽然我怀疑这个数量是可以的,但它提出了一个问题:多少是太多了?我真的不认为有任何限制。我知道现在你可以做了 <a onclick=" //...insert 100KB of javascript code here"> 而且效果很好。虽然有点不可读。我从来没有听说过属性长度有任何限制 在HTML4.01规范中
我在一个新的应用程序中使用HTML5风格的数据属性(
datafoo=“bar”
),在一个地方存储大量数据(最多100个字符)会非常方便。虽然我怀疑这个数量是可以的,但它提出了一个问题:多少是太多了?我真的不认为有任何限制。我知道现在你可以做了
<a onclick=" //...insert 100KB of javascript code here">
而且效果很好。虽然有点不可读。我从来没有听说过属性长度有任何限制 在HTML4.01规范中,在中没有提到对此的任何限制 事实上,据我所知,DTD不允许为属性指定长度 如果HTML4中没有这方面的内容,我不认为HTML5中会出现类似的内容——事实上,我在HTML5的部分中也没有看到任何长度限制 9.1.2.3属性 元素的属性是 在元素的开始内部表示 标签 属性有名称和值。 属性名称必须由一个或多个 除空格外的更多字符 字符,U+0000空,U+0022 引号(“),U+0027撇号 ('),U+003E大于号(>), U+002F索利多线(/),U+003D等于 符号(=)字符,控件 字符,以及 不是由Unicode定义的 HTML语法,属性名称可能是 用低层和层的任意混合编写 ASCII码的大写字母 不区分大小写的匹配 属性的名称 属性值是文本的混合体 和字符引用,但使用 附加的限制 文本不能包含不明确的文本 符号 属性可以用四种形式指定 不同的方式:
el.setAttribute('data-test', <<a really long string>>)
el.setAttribute('data-test',)
SGML使用65k字符的限制集定义属性,如下所示:
虽然对于你正在做的事情,你应该很好。
至于上限,我已经看到jQuery使用数据属性来保存个人数据。HTML4
从HTML 4的角度来看,属性是一个SGML构造。它们的限制定义在:
数量SGMLREF
ATTCNT 60——增加--
ATTPLEN 65536——这些是最大值--
LITLEN 65536——声明中允许--
NAMELEN 65536——避免实际应用中的固定限制--
PILEN 65536——HTML UA的实现--
TAGLVL 100
塔格伦65536
GRPGTCNT 150
GRPCNT 64
这里讨论的值是“attsple”,它是元素属性规范列表上的限制(应该是该元素所有属性的总大小).但是,上面的注释提到应该避免固定限制,因此在大多数实现中,除了可用内存之外,很可能没有真正的限制
HTML 5
HTML5似乎对属性值的长度没有限制
正如上面所说,“这个版本的HTML因此返回到非SGML的基础上。”
稍后,在描述如何解析HTML5时,会出现以下段落(emphasis添加):
下面描述的算法
对DOM树的深度没有限制
生成,或标记长度上的
名称,属性名称,属性
值、文本节点等,而
鼓励实施者避免
任意限制,这是公认的
这可能会带来实际问题
强制用户代理强制嵌套
深度限制
因此,(理论上)HTML 5属性的长度/大小没有限制。来源:
每个HTML元素可以指定任意数量的自定义数据属性和任意值
用于解析/处理这些数据的属性-*属性值将具有
限制
结果表明,数据属性和值放置在DOMStringMap对象中。
这没有固有的限制
发件人:
注意:这里的DOMStringMap接口定义仅适用于JavaScript
其他语言绑定将需要定义如何使用DOMStringMap
为这些语言实现
DOMStringMap是一个具有getter、setter、greator和deleter的接口。
setter有两个DOMString类型的参数,name和value。
该值的类型为DOMString,直接映射到JavaScript字符串
从http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:
JavaScript字符串的最大长度是特定于实现的
[注意:chrome报告bytes.com是恶意软件的来源,所以要小心]最近在Edge(81.0.416.58版(64位))中测试,数据属性似乎有64k的限制
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