14

使用 prompt() 我正在生成一些 html 并需要知道我可以放入弹出窗口的最大长度。

我在规范中找不到任何关于此的内容,想知道是否有人可以提供帮助

4

7 回答 7

11

如果有人感兴趣,这里有一些真实世界的数字。有的话请补充。

在浏览器控制台中使用以下代码:

s = prompt("a", Array(SOME_NUMBER).join("0")); s.length;

  • @Redzarf 提到的带有省略号的Chrome 43 - 2000 。
  • Firefox 39 - 达到10,000,000然后停止测试(浏览器在执行时运行缓慢。您也可能会收到“非响应脚本”警报)。
  • IE 11 - 达到10,000,000然后停止测试。
于 2015-07-06T21:19:09.630 回答
4

ECMAScript 编程语言规范没有指定任何最大长度。最大长度将是特定于实现的,即基于可用内存。

于 2013-04-12T11:00:11.990 回答
4

例如,Chrome (v41) 将 prompt() 的第二个参数限制为 2000 个字符。

如果给定的值比它长,它会截断这 3 个字符串:

first 999 char
'...'
last 998 char
于 2015-04-22T11:43:43.087 回答
1

我在 Chrome 72 上进行了测试,我能够输入超过 50K 的字符prompt

于 2019-04-23T07:30:58.447 回答
0

这是因为在规范中 prompt() 没有最大长度。为了限制长度,您需要在输入结果后检查结果的长度。

于 2013-04-12T11:02:05.217 回答
0

karthick的响应是正确的,但是您可以通过这种方式手动检查输入提示的长度,强制用户只输入少于设定数量的字符,或者取消:

var maxLength = 25;
var userData = -1;

while (userData == -1 || (userData != null && userData.length > maxLength)) {
    userData = window.prompt('Please enter some data. It should be no more than ' + maxLength + ' characters in length', ');
}
于 2013-05-27T11:24:43.570 回答
-2

尝试这个 :

var rep = "+" ;
while (rep != null)
{
    // document.write(rep.length + " " + rep + "<br>") ; // alternate code
    document.getElementById("res").innerHTML = rep.length + " " + rep + "<br>" ;
    rep = prompt("Input length was : " + rep.length, rep + rep);
}

只要您响应“取消”,导航器就会显示最后输入的长度和相应的字符串。在 262144 之后取消。然后进一步测试。对于非常大的长度,刷新显示可能需要很长时间。我没有实际证据证明显示的字符串具有正确的长度。在 262144 "+" 的情况下,我开始在视觉上计算这个字符串,但我在 32 小时后放弃了这个游戏(开个玩笑)。

于 2014-02-08T17:50:16.853 回答