html - tipos - Qué personaje representa una nueva línea en un área de texto
tipos de salto de linea (4)
Solo uno rápido, pero quiero asegurarme de que estoy atrapando variaciones de plataforma cruzada.
Me gusta convertir nuevas líneas ingresadas en un área de texto en una [coma], para que la salida se pueda representar en una sola línea, mi pregunta ...
Actualmente, enviando desde google chrome, cuando veo el valor, encuentro que usa /r/n
para nuevas líneas. Si reemplazo /r/n
Sé que funcionará para Chrome en Windows 7, pero ¿qué pasa con otras plataformas? ¿Hay variaciones sobre lo que otros navegadores insertarán como una nueva línea dentro de un área de texto?
Hablando específicamente sobre textareas en formularios web, para todas las áreas de texto, en todas las plataformas, /r/n
funcionará.
Si usa algo más, causará problemas con cortar y pegar en plataformas Windows.
Los saltos de línea serán canonicalizados por los navegadores de Windows cuando se envíe el formulario, pero si envía el formulario al navegador con /n
saltos de línea, encontrará que el texto no se copiará y pegará correctamente, por ejemplo, el bloc de notas y el área de texto.
Curiosamente, a pesar de que la convención de fin de línea de Unix sea /n
, el estándar en la mayoría de los protocolos de red basados en texto, incluidos HTTP, SMTP, POP3, IMAP, etc. todavía es /r/n
. Sí, puede no tener mucho sentido, ¡pero eso es historia y estándares en evolución para usted!
Parece que, de acuerdo con las textarea , la propiedad value del elemento textarea debería devolver ''/ r / n'' para una nueva línea:
El value del elemento se define como el valor sin formato del elemento con la siguiente transformación aplicada:
Reemplazar cada aparición de un carácter "CR" (U + 000D) no seguido por un carácter "LF" (U + 000A), y cada aparición de un carácter "LF" (U + 000A) no precedido por un "CR" ( U + 000D), por una cadena de dos caracteres que consiste en un par de caracteres U + 000D CARRIAGE RETURN "CRLF" (U + 000A).
Siguiendo el enlace a ''valor'' deja en claro que se refiere a la propiedad de valor accedida en javascript:
Los controles de formulario tienen un valor y un control. (Este último solo lo utilizan los elementos de entrada.) Estos se usan para describir cómo el usuario interactúa con el control.
Sin embargo, en los cinco navegadores principales (con Windows, 27/11/2015), si ''/ r / n'' se escribe en un área de texto, se elimina la ''/ r''. (Para probar: var e = document.createElement (''textarea''); e.value = ''/ r / n''; alert (e.value == ''/ n'');) Esto es cierto para IE desde v9. Antes de eso, IE devolvía ''/ r / n'' y convertía tanto ''/ r'' como ''/ n'' a ''/ r / n'' (que es la especificación HTML5). Entonces ... estoy confundido.
Para estar seguro, generalmente es suficiente usar ''/ r / n /' en expresiones regulares en lugar de ''/ n'', pero si se debe conocer la secuencia de nueva línea, se puede realizar una prueba como la anterior en la aplicación.
Según las especificaciones de HTML, los navegadores deben canonicalizar los saltos de línea en la entrada del usuario a CR LF ( /r/n
), y no creo que ningún navegador se equivoque. Referencia: cláusula 17.13.4 Tipos de contenido de formulario en la especificación de HTML 4.01.
En los borradores HTML5, la situación es más complicada, ya que también tratan los procesos dentro de un navegador, no solo los datos que se envían a un manejador de formularios del lado del servidor cuando se envía el formulario. Según ellos (y la práctica del navegador), el valor del elemento textarea
existe en tres variantes:
- el valor en bruto ingresado por el usuario, no normalizado; puede contener un par CR, LF o CR LF;
- el valor interno, llamado "valor API", donde los saltos de línea se normalizan a LF (solo);
- el valor de presentación, donde los saltos de línea se normalizan a los pares CR LF, según las convenciones de Internet.
- Line Feed and Carriage Return
Estas entidades HTML insertarán una nueva línea o retorno de carro dentro de un área de texto.