Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML属性的长度有限制吗?_Html_Custom Data Attribute - Fatal编程技术网

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规范中

在HTML中,属性值的长度有多长


我在一个新的应用程序中使用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码的大写字母 不区分大小写的匹配 属性的名称

属性值是文本的混合体 和字符引用,但使用 附加的限制 文本不能包含不明确的文本 符号

属性可以用四种形式指定 不同的方式:

  • 空属性语法

  • 不带引号的属性值语法

  • 单引号属性值语法

  • 双引号属性值语法

  • 这里没有提到属性值大小的限制,所以我认为应该没有限制

    您还可以根据

    我刚刚(注意!请参见下面的更新)将长度1000万的字符串放入属性中,然后再次检索它,它工作正常(Firefox 3.5.2和Internet Explorer 7)

    5000万让浏览器挂起“此脚本需要很长时间才能完成”的消息

    更新:我已经修复了脚本:它以前将innerHTML设置为长字符串,现在设置了数据属性。它适用于长度为1亿.YMMV的我

    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的限制