Apenas um rápido, mas quero ter certeza de que estou capturando variações de plataforma cruzada.
Eu gosto de converter novas linhas inseridas em uma área de texto em uma [vírgula], para que a saída possa ser representada em uma única linha, minha pergunta ...
Atualmente, enviando do google chrome, quando vejo o valor, acho que usa \r\n
para novas linhas. Se eu substituir \r\n
, sei que funcionará com o Chrome no Windows 7, mas e em outras plataformas, há variações no que outros navegadores irão inserir como uma nova linha dentro de uma área de texto?
Respostas:
Pelas especificações HTML, os navegadores são obrigados a canonizar as quebras de linha na entrada do usuário para CR LF (
\r\n
), e não acho que nenhum navegador se engane. Referência: cláusula 17.13.4 Tipos de conteúdo do formulário na especificação HTML 4.01.Em rascunhos HTML5, a situação é mais complicada, já que eles também lidam com os processos dentro de um navegador, não apenas com os dados que são enviados para um manipulador de formulários do lado do servidor quando o formulário é enviado. De acordo com eles (e a prática do navegador), o
textarea
valor do elemento existe em três variantes:fonte
the user agent should allow the user to edit, insert, and remove text, and to insert and remove line breaks in the form of "LF" (U+000A) characters
.\n
) é provavelmente o que é fornecido pela "API interna". Nenhuma referência, esta é apenas minha base de suposição no bom senso.Falar especificamente sobre textareas em formulários da web, para todas as textareas, em todas as plataformas,
\r\n
funcionará.Se você usar qualquer outra coisa, poderá causar problemas com recortar e colar nas plataformas Windows.
As quebras de linha serão canonizadas pelos navegadores do Windows quando o formulário for enviado, mas se você enviar o formulário para o navegador com
\n
quebras de linha, verá que o texto não será copiado e colado corretamente entre, por exemplo, o bloco de notas e a área de texto.Curiosamente, apesar de ser a convenção de fim de linha do Unix
\n
, o padrão na maioria dos protocolos de rede baseados em texto, incluindo HTTP, SMTP, POP3, IMAP e assim por diante, ainda é\r\n
. Sim, pode não fazer muito sentido, mas isso é história e padrões em evolução para você!fonte
Parece que, de acordo com as especificações do HTML5 , a propriedade value do elemento textarea deve retornar '\ r \ n' para uma nova linha:
Seguir o link para 'valor' deixa claro que se refere à propriedade de valor acessada em javascript:
No entanto, em todos os cinco navegadores principais (usando Windows, 27/11/2015), se '\ r \ n' for escrito em uma área de texto, o '\ r' será removido. (Para testar: var e = document.createElement ('textarea'); e.value = '\ r \ n'; alert (e.value == '\ n');) Isso é verdade para o IE desde a v9. Antes disso, o IE estava retornando '\ r \ n' e convertendo '\ r' e '\ n' em '\ r \ n' (que é a especificação HTML5). Então ... estou confuso.
Por segurança, geralmente é suficiente usar '\ r? \ N' em expressões regulares em vez de apenas '\ n', mas se a sequência de nova linha deve ser conhecida, um teste como o acima pode ser executado no aplicativo.
fonte
textarea
. 1. O corpo da solicitação terá apenas \ r \ n 2. O valor JS terá apenas \ n, independentemente de você usar \ r, \ r \ n ou \ n ao digitar. Também corresponde à sua descoberta com o IE9 +. - Line Feed and Carriage Return
Essas entidades HTML irão inserir uma nova linha ou retorno de carro dentro de uma área de texto.
fonte