Acabo de probar algunos navegadores con este poco tonto de 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>
Uso de IE8 y Opera 9 en Windows \r\n
. Todos los otros navegadores que probé (Safari 4 y Firefox 3.5 en Windows, y Firefox 3.0 en Linux) usan \n
. Todos pueden manejar \n
bien al establecer el valor, aunque IE y Opera lo volverán a convertir \r\n
internamente. Hay un artículo de SitePoint con algunos detalles más llamados Terminaciones de línea en Javascript .
Tenga en cuenta también que esto es independiente de las terminaciones de línea reales en el archivo HTML en sí (ambos \n
y \r\n
dan los mismos resultados).
Al enviar un formulario, todos los navegadores pueden canonizar nuevas líneas %0D%0A
en la codificación de URL. Para ver eso, cargue, por ejemplo, data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>
y presione el botón Enviar. (Algunos navegadores bloquean la carga de la página enviada, pero puede ver los valores de formulario codificados en URL en la consola).
Sin embargo, no creo que realmente necesites determinar mucho. Si solo desea dividir el texto en líneas nuevas, puede hacer algo como esto:
lines = foo.value.split(/\r\n|\r|\n/g);