Многострочное оповещение в Javascript - PullRequest
21 голосов
/ 18 февраля 2012

Этот код

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

не работает.Консоль Firefox JavaScript называет ошибку «неопределенным строковым литералом» и указывает на символ «перед \ n. Я хочу запустить оповещение с многострочным текстом.

Ответы [ 11 ]

43 голосов
/ 18 февраля 2012

Не тестировали, но работает ли это?

alert("Hello again! This is how we \n add line breaks to an alert box!");
21 голосов
/ 23 января 2013

Это только что случилось со мной ... точно.Мне нужно было изменить его на \\n вместо \n.

alert("Hello again! This is how we"+"\\n"+"add line breaks to an alert box!");
5 голосов
/ 30 ноября 2014

Добавление изменения \n в \\n должно работать, если вы рендерите серверное оповещение (например, на веб-сайте), но если вы работаете на стороне клиента (например, тестирование и т. Д.), Просто \\n не будет работать Работа. Например, попробуйте выполнить следующие строки на этом веб-сайте.

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

или

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

В jsfiddle первый работает, потому что он запускает его на стороне клиента, но если вы запускаете его на стороне сервера, он требует двойной косой черты (\\n). Я не уверен, почему это так, но я проверил это многократно.

Надеюсь, это поможет!

2 голосов
/ 19 октября 2015

Вопрос старый, но я хочу дать четкий ответ и объяснить, почему это происходит для тех, кто приходит сюда:

Прежде всего, нет ничего плохого в строке кода JavaScript в вопросе. Он абсолютно действителен и не вызывает ошибок синтаксического анализа. Причина проблемы в случае с Виталмаксом, скорее всего, заключалась в том, что он не опубликовал дополнительный код, который окружал эту строку.

Вот пример в PHP, который показывает, почему анализатор JS жалуется на синтаксис:

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

Тогда анализируемый вывод на стороне сервера (это то, что получает браузер):

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

В JavaScript строки не должны иметь реальные разрывы строк. Вместо этого они всегда должны быть экранированы (например: \ n), поэтому браузер жалуется на «неопределенный строковый литерал» в реальном разрыве строки. Есть некоторые исключения из этого правила, например, для горизонтальных табуляторов (\ t). Таким образом (в этом случае) вы должны избегать разрывов строки дважды с помощью \\ n. Поэтому, когда PHP анализирует и преобразует его из \\ n в \ n, JavaScript может преобразовать его из \ n в [настоящий разрыв строки] .

Правильный пример PHP будет:

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

Или:

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

Во втором случае вам не нужно дважды экранировать его, потому что экранированные символы в строках PHP с одинарными кавычками не декодируются (\ n остается \ n).

1 голос
/ 21 декабря 2017

Этот скрипт у меня работает.

<script>
  alert("Hello. \r\n How are you?");
</script>
1 голос
/ 10 августа 2016
<script>
alert("Hello. \n How are you?")
</script>
0 голосов
/ 25 сентября 2018

alert («Снова привет! Вот так мы» + «\ n» + «добавляем разрывы строк в окно предупреждений!»);

\ n -> это работает работа с \ n

\ n -> не работает, он просто обрабатывает его как непрерывную строку предупреждений не работает с \ n

0 голосов
/ 22 марта 2018

Другой способ использует String.fromCharCode():

alert("This unit has been removed from stock" + String.fromCharCode(13) + " Do you wish to RETURN this unit to stock?");
0 голосов
/ 21 декабря 2017

Более функциональный способ, который я бы предложил, это определить собственную функцию print() и забыть о вводе \\n для каждой строки вручную

//define
var print = new Function("var lines=arguments[0]+'\\n';; for(var i=1;i<arguments.length;i++){lines+=arguments[i]+'\\n';} alert(lines);");
    
//call
print("say","hello","to","javascript","this","is ","awesome");

Теперь вы можете вызывать print() с несколькими аргументами, и каждый аргумент будет доступен в отдельной строке.

0 голосов
/ 05 февраля 2013

Используйте одинарные кавычки.

alert("Hello again! This is how we"+'\n'+"add line breaks to an alert box!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...