Я тільки протестував кілька браузерів, використовуючи цей нерозумний біт 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
внутрішній рівень. У Javascript є стаття SitePoint із деякими додатковими подробицями, які називаються закінченнями рядків .
Зауважте також, що це не залежить від фактичних закінчень рядків у самому файлі 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);