Создают ли веб-страницы новые строки самостоятельно?

#javascript #html #replace #newline

#javascript #HTML #заменить #новая строка

Вопрос:

Когда текст на веб-странице переносится на следующую строку, потому что он попадает в конец вашего шаблона, это создает скрытую новую строку в коде, которая отличается от <br> ?

Я пытаюсь сделать a .replace() в Javascript, но он не находит фразы, занимающие две строки. Есть ли какой-нибудь способ обойти это, чтобы мой код Javascript работал?

Комментарии:

1. Нет, не совсем. Можете ли вы опубликовать свой JS?

2. В моих тестах replace() , похоже, перенос строк не заботит и не влияет на него. Можете ли вы опубликовать свой репрезентативный пример кода на JS Fiddle или аналогичный?

Ответ №1:

Нет. Перенос слов внутри браузера (или даже внутри отдельного элемента) не приводит к вставке новых строк в разметку.

Также на самом деле нет хорошего способа обнаружить перенос слов в JavaScript.

Возможно, вы захотите опубликовать еще один вопрос со своей целью, чтобы мы могли внести предложения о том, как достичь того, чего вы действительно хотите.

Ответ №2:

Перевод строки ( n или <br /> ) — это не то же самое, что автоматический перенос текста механизмом компоновки текста. n Или <br /> заставляет механизм компоновки переносить строку и обнаруживается как символ ( n ) или тег ( <br /> ), но автоматический перенос не создает новый символ или тег. Вы можете только проверить высоту контейнера, чтобы угадать, имеете ли вы дело с автоматически переносимым текстом или нет.

Комментарии:

1. Символ новой строки n в разметке не «[заставляет] механизм компоновки переносить строку», он игнорируется. В HTML пробелы сворачиваются в один пробел, если он не находится внутри элемента PRE.

2. @Rob Да, этот конкретный пример был неуместен в контексте HTML, следовало бы пояснить, что это пример для разрывов строк и механизмов компоновки в целом.

Ответ №3:

Включите пробелы в часть вашего выражения:

 s.replace(/stuff on line1[s] stuff on line 2/, 'replacement');
  

Или просто символы n новой строки и r :

 s.replace(/stuff on line1[\n\r] stuff on line 2/, 'replacement');
  

Существует многострочный флаг ( /m ), но, как сообщается, он не является универсальным.