2011-01-25 5 views
4

Nous avons un vrai problème bizarre, où lorsque nous faisons un post, les fins de ligne sont \r\n, mais lorsque nous tirons la valeur en utilisant javascript, il obtient simplement \n. Cela cause des problèmes, car pour notre système, une création fera un post de formulaire normal, et une mise à jour tirera des valeurs du formulaire pour construire une requête ajax. Plus tard, nous faisons une comparaison de chaînes sur un champ donné, et voyons ce mélange étrange entre \r étant là ou n'étant pas là.comportement de fin de ligne incohérent sur firefox dans Windows

IE gère ce bien (TOUJOURS \r\n), FF sur Windows sera soumis avec \r\n, et en javascript ne rapportera \n. Ce qui est vraiment étrange, c'est que sur Linux, à la fois firefox et chrome affichera \r\n, et faire un document.getElementById('text-area-id').value montrera toujours seulement \n.

Est-ce un coin poussiéreux de la spécification HTTP ou quelque chose comme ça? Est-ce que les navigateurs implémentent ceci pour que les serveurs Windows ne meurent pas? Y a-t-il un moyen de contourner cela, puis de désinfecter tous les domaines? Ce que je m'attendrais à ce que les POSTES JS et HTTP se comportent de la même manière, et utilisent le système par défaut sur n'importe quel système sur lequel ils se trouvent.

Répondre

0

\r est apparemment un caractère illégal dans le DOM, c'est pourquoi vous ne le verrez pas à partir du script. Firefox convertit les sauts de ligne de la plate-forme en \n lorsque vous définissez la valeur de la zone de texte. D'un autre côté, lors de la soumission d'un formulaire, il pense qu'il doit utiliser le standard HTTP linebreak, qui est apparemment \r\n. Donc, il les convertit tous avant d'envoyer le formulaire.

Questions connexes