Максимальная максимальная длина

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

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

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

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

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

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

  • Хром 43 – 2000 с эллипсами, как упоминал @ Редзарф.
  • Firefox 39 – Достигнут 10 000 000, а затем остановил тестирование (браузер медленно запускается во время выполнения. Возможно, вы также получите предупреждение «не реагирующий скрипт»).
  • IE 11 – достиг 100 000 000, а затем прекратил тестирование.

Например, Chrome (v41) ограничивает второй параметр для приглашения () до 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 + "
") ; // alternate code document.getElementById("res").innerHTML = rep.length + " " + rep + "
" ; rep = prompt("Input length was : " + rep.length, rep + rep); }

Как только вы ответите «Отмена», навигатор отобразит последнюю длину ввода и соответствующую строку. Отмените после 262144. Затем проверьте дальше. Для очень большой длины, обновление дисплея может занять много времени. У меня нет фактического доказательства того, что отображаемая строка имеет правильную длину. В случае с 262144 «+» я начал визуально рисовать эту строку, но я отбросил эту игру через 32 часа (просто шучу).