Я только что протестировал несколько браузеров, использующих этот глупый кусочек JavaScript:
function log_newline(msg, test_value) {
if (!test_value) {
test_value = document.getElementById('test').value;
}
console.log(msg + ': ' + (test_value.match(/\r/) ? 'CR' : '')
+ ' ' + (test_value.match(/\n/) ? 'LF' : ''));
}
log_newline('HTML source');
log_newline('JS string', "foo\nbar");
log_newline('JS template literal', `bar
baz`);
<textarea id="test" name="test">
</textarea>
IE8 и Opera 9 на Windows используют \r\n
. Все остальные протестированные мной браузеры (Safari 4 и Firefox 3.5 для Windows и Firefox 3.0 для Linux) используют \n
. Все они могут \n
прекрасно работать при установке значения, хотя IE и Opera будут преобразовывать его обратно во \r\n
внутреннее состояние. Есть статья SitePoint с некоторыми подробностями, называемая окончаниями строк в Javascript .
Также обратите внимание, что это не зависит от фактических окончаний строк в самом файле HTML (оба \n
и \r\n
дают одинаковые результаты).
При отправке формы все браузеры канонизируют переводы строк %0D%0A
в кодировку URL. Чтобы увидеть это, загрузите, например, data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>
и нажмите кнопку отправки. (Некоторые браузеры блокируют загрузку отправленной страницы, но вы можете увидеть значения формы в кодировке URL в консоли.)
Я не думаю, что вам действительно нужно делать что-то определенное. Если вы просто хотите разделить текст на новые строки, вы можете сделать что-то вроде этого:
lines = foo.value.split(/\r\n|\r|\n/g);