96 votes

Quel caractère représente une nouvelle ligne dans une zone de texte ?

Juste une rapide, mais je veux m'assurer que j'attrape les variations de la plateforme.

J'aimerais convertir les nouvelles lignes saisies dans une zone de texte en [virgule], afin que la sortie puisse être représentée sur une seule ligne, ma question...

Actuellement, en envoyant depuis google chrome, lorsque je visualise la valeur, je constate qu'elle utilise \r\n pour les nouvelles lignes. Si je remplace \r\n Je sais que cela fonctionnera pour chrome sous Windows 7, mais qu'en est-il des autres plateformes, y a-t-il des variations sur ce que les autres navigateurs insèrent comme nouvelle ligne dans une zone de texte ?

116voto

Jukka K. Korpela Points 71599

Selon les spécifications HTML, les navigateurs doivent canoniser les sauts de ligne dans les entrées utilisateur en CR LF ( \r\n ), et je ne pense pas qu'un navigateur se trompe à ce sujet. Référence : clause 17.13.4 Types de contenu des formulaires dans la spécification HTML 4.01.

Dans les projets HTML5, la situation est plus compliquée, car ils traitent également des processus à l'intérieur d'un navigateur, et pas seulement des données qui sont envoyées à un gestionnaire de formulaire côté serveur lorsque le formulaire est soumis. D'après eux (et la pratique des navigateurs), l'élément textarea La valeur de l'élément existe en trois variantes :

  1. la valeur brute telle que saisie par l'utilisateur, non normalisée ; elle peut contenir CR, LF, ou une paire CR LF ;
  2. la valeur interne, appelée "valeur API", où les sauts de ligne sont normalisés à LF (seulement) ;
  3. la valeur de la soumission, où les sauts de ligne sont normalisés en paires CR LF, conformément aux conventions Internet.

12voto

Ben Points 14995

Je parle spécifiquement des zones de texte dans les formulaires Web, pour toutes les zones de texte, sur toutes les plateformes, \r\n fonctionnera.

Si vous utilisez autre chose, vous aurez des problèmes avec le couper-coller sur les plateformes Windows.

Les sauts de ligne seront canonisés par les navigateurs Windows lorsque le formulaire sera soumis, mais si vous envoyez le formulaire au navigateur avec \n les sauts de ligne, vous constaterez que le texte ne sera pas copié et collé correctement entre, par exemple, le bloc-notes et la zone de texte.

Il est intéressant de noter que, bien que la convention de fin de ligne d'Unix soit \n la norme dans la plupart des protocoles de réseau basés sur le texte, y compris HTTP, SMTP, POP3, IMAP, et ainsi de suite, est toujours la suivante \r\n . Oui, cela n'a peut-être pas beaucoup de sens, mais c'est l'histoire et l'évolution des normes pour vous !

6voto

barncat Points 91

Il semble que, selon le Spécifications HTML5 la propriété valeur de l'élément textarea doit retourner ' \r\n ' pour un saut de ligne :

L'élément valeur est défini comme la valeur brute de l'élément avec la transformation suivante appliquée :

Remplacer chaque occurrence d'un caractère "CR" (U+000D) qui n'est pas suivi d'un caractère "LF" (U+000A), et chaque occurrence d'un caractère "". par un caractère "LF" (U+000A), et chaque occurrence d'un caractère "LF" (U+000A) caractère "LF" (U+000A) non précédé d'un caractère "CR" (U+000D), par une chaîne de deux caractères constituée d'une paire de caractères U+000D CARRIAGE RETURN "CRLF" (U+000A) (U+000A).

En suivant le lien vers "value", il est clair qu'il s'agit de la propriété value accessible en javascript :

Les contrôles de formulaire ont une valeur et un caractère vérifié. (Cette dernière n'est utilisée que par les éléments de saisie). Ces éléments sont utilisés pour décrire comment l'utilisateur interagit avec le contrôle.

Toutefois, dans les cinq principaux navigateurs (sous Windows, 27/11/2015), si ' \r\n est écrit dans une zone de texte, l'élément ' \r est supprimée. (Pour tester : var e=document.createElement('textarea') ; e.value=' \r\n ' ; alert(e.value==' \n ') ;) Ceci est vrai pour IE depuis la version 9. Avant cela, IE retournait ' \r\n et en convertissant les deux \r et \n à \r\n (qui est la spécification HTML5). Donc... je suis confus.

Pour être sûr, il est généralement suffisant d'utiliser ' \r ? \n ' dans les expressions régulières au lieu de simplement ' \n Mais si la séquence de nouvelles lignes doit être connue, un test comme celui qui précède peut être effectué dans l'application.

5voto

Damodar Das Points 255

- Line Feed and 
 Carriage Return

Ces Entités HTML insère une nouvelle ligne ou un retour chariot dans une zone de texte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X