web-dev-qa-db-fra.com

Alerte multiligne en Javascript

Ce code

alert("Hello again! This is how we" + "\n" + "add line breaks to an alert box!");

ne fonctionne pas. La console JavaScript de Firefox nomme l'erreur en tant que "littéral de chaîne non terminé" et pointe sur le symbole "avant\n. Je souhaite déclencher une alerte avec un texte multiligne. Pas de requête jQuery.

18
Pave

N'a pas testé mais cela fonctionne-t-il?

alert("Hello again! This is how we \n add line breaks to an alert box!");
40
okyanet

Cela m'est juste arrivé ... exactement. Je devais le changer en \\n au lieu de \n.

alert("Hello again! This is how we"+"\\n"+"add line breaks to an alert box!");
19
gloomy.penguin

Ajouter \n à \\n devrait fonctionner si vous restituez l'alerte côté serveur (par exemple: sur un site Web), mais si vous exécutez le côté client (par exemple: test, etc.), seul \\n ne fonctionnera pas. Par exemple, essayez d’exécuter les lignes suivantes sur this website.

alert("Hello again! This is how we"+"\n"+"add line breaks to an alert box!");

ou:

 alert("Hello again! This is how we" +"\\n" +"add line breaks to an alert box!");

Dans jsfiddle, le premier fonctionne, car il s'exécute côté client, mais si vous l'exécutez côté serveur, il nécessite la double barre oblique (\\n). Je ne sais pas pourquoi, mais je l'ai testé plusieurs fois. 

J'espère que cela t'aides!

4
Travis

La question est ancienne mais je veux donner une réponse claire et expliquer pourquoi cela se produit pour les autres qui viennent ici:

Tout d’abord, la ligne de code JavaScript n’est pas fausse dans la question. Il est absolument valide et ne génère aucune erreur d'analyse. La cause du problème dans le cas de Vitalmax était probablement due au fait qu’il n’avait pas posté de code supplémentaire, ce qui entourait cette ligne.

Voici un exemple en PHP, qui montre pourquoi l’analyseur JS se plaint de la syntaxe:

<?php
  echo "alert('Hello again! This is how we\nadd line breaks to an alert box!');";
?>

La sortie analysée côté serveur est alors la suivante (c'est ce que le navigateur obtient):

alert("Hello again! This is how we
add line breaks to an alert box!");

En JavaScript, les chaînes ne doivent pas ont de vrais sauts de ligne. Au lieu de cela, ils doivent toujours être échappés (comme:\n), de sorte que le navigateur se plaint d'un "littéral de chaîne non terminé" au saut de ligne réel. Il existe quelques exceptions à cette règle, comme pour les tabulateurs horizontaux (\ t). Donc (dans ce cas) vous devez échapper deux fois à la ligne avec \\ n. Ainsi, lorsque PHP l’analyse et le convertit de \\ n en\n, JavaScript peut le convertir de\n en [saut de ligne réel].

Exemple correct PHP serait:

<?php
  echo "alert('Hello again! This is how we\\nadd line breaks to an alert box!');";
?>

Ou: 

<?php
  echo 'alert("Hello again! This is how we\nadd line breaks to an alert box!");';
?>

Dans le deuxième cas, vous n'avez pas à double échapper, car les caractères échappés dans les chaînes PHP avec des guillemets simples ne sont pas décodés (\ n reste\n).

2
StanE
<script>
alert("Hello. \n How are you?")
</script>
1
Travis

Ce script fonctionne pour moi.

<script>
  alert("Hello. \r\n How are you?");
</script>
1
Khurram Farooq

Utilisez des guillemets simples.

alert("Hello again! This is how we"+'\n'+"add line breaks to an alert box!");
0
David Starkey

Une autre façon utilise String.fromCharCode():

alert("This unit has been removed from stock" + String.fromCharCode(13) + " Do you wish to RETURN this unit to stock?");
0
Kevin Looby

error "missing ; before statement" Cela me dit qu'il manque le point-virgule au-dessus de cette ligne de code. La syntaxe habituelle gotchya est si les instructions qui ne ferment pas correctement les parenthèses. Ou des accolades.

0
Chris K

alert ("Bonjour encore! C'est comme cela" + "\ n" + "que nous ajoutons des sauts de ligne à une boîte d'alerte!");

\ n -> cela fonctionne travailler avec\n

\ n -> ne fonctionne pas, il la traite simplement comme une chaîne continue de messages d’alerte ne fonctionne pas avec\n

0
Lalit Dubey