Answers:
从HTML 4的角度来看,属性是SGML构造。它们的限制在HTML 4的SGML声明中定义:
QUANTITY SGMLREF ATTCNT 60-增加了- ATTSPLEN 65536-这些是最大值- LITLEN 65536-声明中允许- NAMELEN 65536-避免实际使用固定限制- PILEN 65536-HTML UA的实现- TAGLVL 100 TAGLEN 65536 玻璃钢150 玻璃钢碳纤维64
此处讨论的值是“ ATTSPLEN”,这是元素的属性规范列表的限制(应该是该元素的所有属性的总大小)。上面的注释提到应避免使用固定限制,但是,在大多数实现中,除了可用内存外,没有其他实际限制。
规范指出,HTML 5似乎有所不同,“此版本的HTML因此返回了非SGML基础。”
稍后,当描述如何解析HTML 5时,将出现以下段落(添加了重点):
下面描述的算法 对生成的DOM树的深度或标记名称,属性名称,属性值,文本节点等的长度没有限制。尽管鼓励实现者避免任意限制,但我们认识到实际问题可能会迫使用户代理施加嵌套深度限制。
所以我想这就是你的答案。
我刚刚编写了一个测试,该测试将长度为1000万的字符串放入属性中,然后再次对其进行检索,并且效果很好(Firefox 3.5.2和Internet Explorer 7)
5000万个浏览器因“此脚本需要很长时间才能完成”消息而挂起。
我真的不认为有任何限制。我知道你现在可以做
<a onclick=" //...insert 100KB of javascript code here">
而且效果很好。尽管有点不可读。
9.1.2.3属性
元素的属性在元素的开始标记内表示。
属性具有名称和值。属性名称必须包含一个或多个空格字符以外的字符,U + 0000 NULL,U + 0022引号(“),U + 0027撇号('),U + 003E大于号(>),U + 002F SOLIDUS(/)和U + 003D EQUALS SIGN(=)字符,控制字符以及未由Unicode定义的任何字符在HTML语法中,属性名称可以大小写字母混合使用这是属性名称的ASCII大小写不敏感匹配。
属性值是文本和字符引用的混合,除了附加的限制是文本不能包含歧义的“&”号。
可以用四种不同的方式指定属性:
空属性语法
不带引号的属性值语法
单引号属性值语法
双引号属性值语法
这里没有提到对属性值大小的限制。所以我认为应该没有。
您还可以根据
来自http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data:
每个HTML元素可以指定任意数量的自定义数据属性,并具有任何值。
用于解析/处理这些data- *属性值的方法将具有局限性。
原来数据属性和值都放在DOMStringMap对象中。这没有固有的限制。
从http://dev.w3.org/html5/spec/Overview.html#domstringmap:
注意:此处的DOMStringMap接口定义仅适用于JavaScript环境。其他语言绑定将需要定义如何为这些语言实现DOMStringMap。
DOMStringMap是具有getter,setter,gregor和Deleter的接口。设置器具有两个DOMString类型的参数:名称和值。该值是DOMString类型,直接映射到JavaScript String。
从 http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:
JavaScript字符串的最大长度是特定于实现的。
[注意:chrome正在将bytes.com报告为恶意软件的来源,因此请注意]
iframe@srcdoc
(MDN(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe)– [HTML5.2,其中包含一个完整的文档(我听说您喜欢文件,所以(…))