Подсказка максимальная длина

используя prompt () я генерирую некоторый html и должен знать максимальную длину, которую я могу поместить во всплывающее окно.

Я не могу найти ничего в спецификации об этом, интересно, может ли кто-то помочь

6 ответов


в спецификации языка программирования ECMAScript не указан максимальный длина. Максимальная длина С будет специфичной для реализации i.e, на основе доступной памяти.


вот некоторые реальные цифры в случае, если кто-то заинтересован. Пожалуйста, добавьте больше, если у вас есть.

используя следующий код в консоли браузера:

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

  • хром 43 - 2000 С эллипсами, как упоминалось @Redzarf.
  • Firefox 39-Достигнуто 10,000,000 затем остановлено тестирование (браузер работает медленно, пока это выполняется. Вы можете получить предупреждение "non responsive script" как ну.)
  • IE 11-достиг 10,000,000 затем прекратил тестирование.

например, Chrome (v41) ограничивает 2-й параметр prompt () 2000 символами.

Если заданное значение длиннее, оно усекает эти 3 строки:

first 999 char
'...'
last 998 char

Это потому, что в спецификации нет максимальной длины для prompt (). Чтобы ограничить длину, вам нужно будет проверить длину результата после его ввода.


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', ');
}

попробуйте это :

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 часа (просто шучу).