Saya baru saja menguji beberapa browser menggunakan JavaScript yang konyol ini:
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 dan Opera 9 menggunakan Windows \r\n
. Semua browser lain yang saya uji (Safari 4 dan Firefox 3.5 pada Windows, dan Firefox 3.0 pada Linux) digunakan \n
. Mereka semua dapat menangani dengan \n
baik ketika mengatur nilai, meskipun IE dan Opera akan mengubahnya kembali menjadi \r\n
internal. Ada artikel SitePoint dengan beberapa perincian lagi yang disebut Garis akhiran dalam Javascript .
Perhatikan juga bahwa ini tidak tergantung pada akhir baris aktual dalam file HTML itu sendiri (keduanya \n
dan \r\n
memberikan hasil yang sama).
Saat mengirimkan formulir, semua browser mengkanoniskan baris baru ke %0D%0A
dalam penyandian URL. Untuk melihatnya, muat misalnya data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>
dan tekan tombol kirim. (Beberapa browser memblokir memuat halaman yang dikirimkan, tetapi Anda dapat melihat nilai formulir yang dikodekan URL di konsol.)
Saya tidak berpikir Anda benar-benar perlu melakukan banyak penentuan. Jika Anda hanya ingin membagi teks pada baris baru, Anda dapat melakukan sesuatu seperti ini:
lines = foo.value.split(/\r\n|\r|\n/g);