Esta pregunta me ha molestado durante un millón de años ... cada vez que creo un sitio web con un área de texto que permite varias líneas (como una "Bio" para el perfil de un usuario) siempre termino escribiendo el siguiente código paranoico:
// C# code sample...
bio = bio.Replace("\r\n", "\n").Replace("\r", "\n");
bio = Regex.Replace(@"\n{2,}", "\n\n");
Entonces, ¿qué envían los navegadores para un <textarea name="Bio"></textarea>
si tiene varias líneas?
html
browser
web-standards
line-breaks
Timothy Khouri
fuente
fuente
<p>
etiqueta.Respuestas:
Las especificaciones HTTP y MIME especifican que las líneas de encabezado deben terminar con \ r \ n, pero no son claras (algunos argumentarían que no está claro si son claras) sobre qué hacer con el contenido de un TEXTAREA. (Vea, por ejemplo, este hilo de un grupo de trabajo HTML sobre el tema).
Aquí hay una cita de la especificación HTTP / 1.1 sobre los encabezados de los mensajes:
Creo que es una buena estrategia en general: sea estricto con lo que produce pero liberal en lo que acepta. Debe asumir que recibirá todo tipo de terminadores de línea. (Tenga en cuenta que, además de CRLF y LF, Mac OS-9 usaba CR solo, y todavía hay algunos. El estándar Unicode (sección 5.8) especifica una amplia gama de secuencias de caracteres que deben reconocerse como terminadores de línea; hay una lista de ellos aquí .)
fuente
textarea
(que es algo que la especificación, o al menos la sección citada de Ted, no restringe).textarea
los correos electrónicos no se envían como campos de encabezado de mensaje.textarea
s se codifican en el cuerpo del mensaje que es diferente.Todos los navegadores modernos envían CRLF (
\r\n
). Sin embargo, esto no es algo que se haya estandarizado satisfactoriamente, por lo que definitivamente consideraría que vale la pena normalizar las nuevas líneas de todo el texto de entrada de varias líneas.Cuando el valor se lee a través de JavaScript en lugar de enviarse directamente desde un formulario, el comportamiento del navegador es diferente. IE y Opera devuelven cadenas con CRLF en; Firefox y WebKit devuelven LF. Por lo tanto, es probable que cualquier formulario que se envíe con la ayuda de JavaScript / XMLHttpRequest venga en cualquier formulario.
fuente