对于HTML中的属性值来说,多长时间算太长?
我在一个新的应用程序中使用HTML5风格的数据属性(data-foo="bar"),在一个地方存储大量数据(超过100个字符)真的很方便。虽然我怀疑这个数量是可以的,但它提出了一个问题:多少才算太多?
对于HTML中的属性值来说,多长时间算太长?
我在一个新的应用程序中使用HTML5风格的数据属性(data-foo="bar"),在一个地方存储大量数据(超过100个字符)真的很方便。虽然我怀疑这个数量是可以的,但它提出了一个问题:多少才算太多?
当前回答
来自HTML5语法文档
9.1.2.3 Attributes Attributes for an element are expressed inside the element's start tag. Attributes have a name and a value. Attribute names must consist of one or more characters other than the space characters, U+0000 NULL, U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), U+003E GREATER-THAN SIGN (>), U+002F SOLIDUS (/), and U+003D EQUALS SIGN (=) characters, the control characters, and any characters that are not defined by Unicode. In the HTML syntax, attribute names may be written with any mix of lower- and uppercase letters that are an ASCII case-insensitive match for the attribute's name. Attribute values are a mixture of text and character references, except with the additional restriction that the text cannot contain an ambiguous ampersand. Attributes can be specified in four different ways: Empty attribute syntax Unquoted attribute value syntax Single-quoted attribute value syntax Double-quoted attribute value syntax
这里没有提到属性值的大小限制。所以我认为不应该有。
方法验证文档的有效性
HTML5验证器(高度实验性)
其他回答
我刚刚写了一个测试(注意!(参见下面的更新),它将一个长度为1000万的字符串放入一个属性,然后再次检索它,它工作正常(Firefox 3.5.2和Internet Explorer 7)
5000万会让浏览器显示“这个脚本需要很长时间才能完成”的信息。
更新:我已经修复了脚本:它以前设置innerHTML为一个长字符串,现在它正在设置一个数据属性。https://output.jsbin.com/wikulamuni它为我工作,长度为1亿。YMMV。
el.setAttribute('data-test', <<a really long string>>)
来自HTML5语法文档
9.1.2.3 Attributes Attributes for an element are expressed inside the element's start tag. Attributes have a name and a value. Attribute names must consist of one or more characters other than the space characters, U+0000 NULL, U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), U+003E GREATER-THAN SIGN (>), U+002F SOLIDUS (/), and U+003D EQUALS SIGN (=) characters, the control characters, and any characters that are not defined by Unicode. In the HTML syntax, attribute names may be written with any mix of lower- and uppercase letters that are an ASCII case-insensitive match for the attribute's name. Attribute values are a mixture of text and character references, except with the additional restriction that the text cannot contain an ambiguous ampersand. Attributes can be specified in four different ways: Empty attribute syntax Unquoted attribute value syntax Single-quoted attribute value syntax Double-quoted attribute value syntax
这里没有提到属性值的大小限制。所以我认为不应该有。
方法验证文档的有效性
HTML5验证器(高度实验性)
我从未听说过对属性的长度有任何限制。
在HTML 4.01规范中,在属性部分没有提到任何限制。
在HTML 4.01 DTD中也是如此——事实上,据我所知,DTD不允许您指定属性的长度。
如果HTML 4中没有这方面的内容,我认为HTML 5中也不会出现这样的内容——而且我实际上也没有看到HTML 5的9.1.2.3属性部分有任何长度限制。
SGML定义的属性限制为65k个字符,如下所示: http://www.highdots.com/forums/html/length-html-attribute-175546.html
尽管就你现在所做的,你应该没事。 至于上限,我个人也见过jQuery使用数据属性来保存几k的数据。
我真的不认为有什么限制。我现在知道你能做到
<a onclick=" //...insert 100KB of javascript code here">
它工作得很好。虽然有点难以读懂。