【问题标题】:Why is the default max length for an input 524288?为什么输入的默认最大长度为 524288?
【发布时间】:2014-12-15 15:24:43
【问题描述】:

HTML 输入 (<input type="text">) 的默认最大长度为 524288 个字符。这似乎是一个很奇怪的数字,为什么选择它?

【问题讨论】:

  • 有据可查,至少here
  • 是受到规范的限制,还是只是某些浏览器的限制? bugs.webkit.org/show_bug.cgi?id=44883
  • w3c 似乎没有提到它w3.org/TR/html5/… 只是它需要是一个正数并且应该反映输入元素的预期内容。您在浏览器中是这样吗? w3schools 几乎不是可靠的来源。
  • 我认为他们想要一个不太长的值以避免安全问题,但足以存储信息。也许他们决定使用 2 的幂并选择 2^19 只是因为十六进制看起来不错:80000。
  • 524288 字节等于 512 千字节

标签: html w3c html-input


【解决方案1】:

根据w3c,最大值是无限的:

最大长度 = 数字 [CN]

当 type 属性的值为“text”或“password”时,此属性指定用户可以输入的最大字符数。这个数字可能会超过指定的大小,在这种情况下,用户代理应该提供滚动机制。 此属性的默认值为不限数量。

尽管如此,我注意到在 Chrome 中确实默认 maxlength 为 524288,这对我来说似乎是一个“错误”,或者至少是故意选择将输入限制为 512KB(感谢 Benjamin Udink ten Cate 的指点那个)。

【讨论】:

  • 啊,原来是 512KB。我认为这是一个完全随机的数字,因为它实际上不是 512_kilo_bytes,而是 512_kibi_bytes。 Google 转换器必须使用最新标准
  • @mikemike:这只是营销。我会保留它的代码;)。多年来一直如此,在我看来仍然如此。
  • 我不明白其中的原理,除了让 99.9% 知道 [x]byte 是(或曾经是)什么的人感到困惑。很烦人!无论如何,这就是最初引发问题的原因,因为我刚刚进行了一次快速的 Google 转换,预计数字为 512KB,但得到了一个随机数
  • "标准最近发生了变化。"这似乎是一个完全没有意义的陈述。表示中涉及的位数对于编码目的应该是最重要的。
  • 我注意到有趣的事情,看起来 Chrome 已将默认最大长度更改为 -1。看起来这种变化是最近发生的(我猜在一年或几年内)。如果您查看 Chromium GitHub 镜像 (github.com/chromium/chromium/…) 中的一些 Web 测试,您会发现它现在正在测试默认值是 -1。这是有道理的,因为这必须等同于无限。
猜你喜欢
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 2012-06-02
  • 2014-08-03
相关资源
最近更新 更多