Longueur maximale rapide

En utilisant prompt (), je génère un peu de html et j'ai besoin de connaître la longueur maximale que je peux mettre dans la fenêtre contextuelle.

Je ne trouve rien dans la spécification à ce sujet, je me demande si quelqu'un peut aider

La spécification de langage de programmation ECMAScript ne spécifie aucune longueur maximale. La longueur maximale sera spécifiquement axée sur la mise en œuvre, en fonction de la mémoire disponible.

Voici quelques chiffres réels au cas où quelqu'un serait intéressé. Ajoutez-en plus si vous en avez.

Utilisation du code suivant dans la console du navigateur:

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

  • Chrome 43 – 2000 avec des ellipses comme mentionné par @Redzarf.
  • Firefox 39 – Atteint 10 000 000 puis arrêté le test (le navigateur fonctionne lentement pendant que cela s'exécute. Vous pouvez également obtenir l'alerte "script non réactif").
  • IE 11 – A atteint 10 000 000 puis a cessé de tester.

Par exemple, Chrome (v41) limite le 2ème paramètre pour invite () à 2000 caractères.

Si la valeur donnée est plus longue qu'elle tronque ces 3 chaînes:

 first 999 char '...' last 998 char 

Ceci signifie qu'il n'y a pas de longueur maximale pour prompt () dans la spécification. Afin de limiter la longueur, vous devrez vérifier la longueur du résultat après sa saisie.

La réponse de karthick était correcte, mais vous pouvez vérifier manuellement la longueur de l'invite de saisie de cette façon, obligeant l'utilisateur à ne saisir que moins un nombre de caractères défini ou à annuler:

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

Essaye ça :

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

Dès que vous répondez «Annuler», le navigateur affiche la dernière longueur d'entrée et la chaîne correspondante. Annuler après 262144. Ensuite, tester plus loin. Pour une très grande longueur, le rétablissement de l'affichage peut prendre beaucoup de temps. Je n'ai aucune preuve réelle que la chaîne affichée ait la longueur correcte. Dans le cas de 262144 "+", j'ai commencé à visualiser cette chaîne, mais j'ai laissé tomber ce jeu après 32 heures (en plaisantant).