Подтвердить что ты не робот

Какой символ представляет новую строку в текстовой области

Просто быстрый, но я хочу, чтобы я ловил кросс-платформенные варианты.

Мне нравится преобразовывать новые строки, введенные в текстовую область, в [запятую], так что вывод может быть представлен в одной строке, мой вопрос...

В настоящее время, отправляя из google chrome, когда я просматриваю значение, я нахожу, что он использует \r\n для новых строк. Если я заменил \r\n, я знаю, что он будет работать для chrome на окнах 7, но как насчет других платформ, есть ли варианты того, что другие браузеры будут вставлять в новую строку внутри текстовой области?

4b9b3361

Ответ 1

По спецификациям HTML браузеры должны канонизировать разрывы строк при вводе пользователя в CR LF (\r\n), и я не думаю, что любой браузер ошибается. Ссылка: статья 17.13.4 Типы содержимого контента в спецификации HTML 4.01.

В черновиках HTML5 ситуация сложнее, поскольку они также обрабатывают процессы внутри браузера, а не только данные, которые отправляются обработчику формы на стороне сервера при отправке формы. Согласно им (и практике браузера) значение элемента textarea существует в трех вариантах:

  • необработанное значение, введенное пользователем, ненормализованное; он может содержать пару CR, LF или CR LF;
  • внутреннее значение, называемое "значением API", где разрывы строк нормируются на LF (только);
  • значение представления, где разрывы строк нормализуются к парам CR LF, в соответствии с интернет-соглашениями.

Ответ 2

Говоря конкретно о текстовых областях в веб-формах, для всех текстовых областей, на всех платформах, \r\n будет работать.

Если вы используете что-либо еще, вы будете вызывать проблемы с вырезанием и вставкой на платформах Windows.

Разрывы строк будут канонизованы браузерами окон при отправке формы, но если вы отправите форму в браузер с помощью \n linebreaks, вы обнаружите, что текст не будет копироваться и вставляться правильно, например, в блокнот и текстовое поле.

Интересно, что несмотря на то, что соглашение о конце линии Unix имеет \n, стандарт в большинстве текстовых сетевых протоколов, включая HTTP, SMTP, POP3, IMAP и т.д., по-прежнему \r\n. Да, это может не иметь большого смысла, но эта история и развивающиеся стандарты для вас!

Ответ 3


- Line Feed and 
 Carriage Return

Эти объекты HTML вставят новую строку или возврат каретки внутри текстовой области.

Ответ 4

Похоже, что согласно спецификации HTML5, свойство value элемента textarea должно возвращать '\ r\n' для новой строки

Элемент value определяется как исходное значение элемента с применением следующего преобразования:

Заменить каждое появление символа "CR" (U + 000D), за которым не следует символ "LF" (U + 000A), и каждое появление "LF" (U + 000A) символ, которому предшествует символ "CR" (U + 000D), посредством двухсимвольная строка, состоящая из U + 000D CARRIAGE RETURN "CRLF" (U + 000A).

После ссылки на "значение" ясно, что он ссылается на свойство value, доступное в javascript:

Элементы управления формой имеют значение и проверочную проверку. (Последний используется только по элементам ввода.) Они используются для описания того, как пользователь взаимодействует с контролем.

Однако во всех пяти основных браузерах (с использованием Windows, 11/27/2015), если '\ r\n' записывается в текстовое поле, '\ r' лишается. (Для проверки: var e = document.createElement('textarea'); e.value = '\ r\n'; alert (e.value == '\n');) Это относится к IE с версии v9. До этого IE возвращал '\ r\n' и конвертировал как '\ r', так и '\n' в '\ r\n' (который является спецификацией HTML5). Итак... Я в замешательстве.

Чтобы быть в безопасности, обычно достаточно использовать "\ r?\n" в регулярных выражениях, а не просто "\n", но если последовательность новой строки должна быть известна, в приложении может быть выполнено тестирование, подобное приведенному выше..