Perte de nouvelles lignes dans le contenu div dans IE 7
-
06-07-2019 - |
Question
J'essaie de scinder le texte innerText d'une div sur les nouvelles lignes dans le source. Cela fonctionne bien avec:
$('div').text().split("\r\n|\r|\n")
Mais cela échoue dans IE 7, car les nouvelles lignes sont apparemment supprimées. jQuery 1.3.2 ne semble pas être en faute puisque j'ai aussi essayé les deux:
$('div')[0].innerText.split("\r\n|\r|\n")
et
$('div')[0].innerHTML.split("\r\n|\r|\n")
Ni l'un des travaux ci-dessus ne fonctionne si je change le div en un pré.
Il semble que les nouvelles lignes soient une fois que la source est analysée dans le DOM. :( Est-ce vrai? N'y a-t-il aucun moyen de les résoudre avec du javascript?
La solution
Les nouvelles lignes sont des espaces et ne sont généralement pas conservées. Ils veulent dire la même chose qu’un espace.
Autres conseils
Essayez de scinder sur "\ n" \
au lieu de "\ r \ n"
.
Pour faire les deux, envisagez de scinder le motif "\ r? \ n"
.
IE perd les nouvelles lignes dans le contenu de l'élément, sauf:
- dans
pre
(ettexte en clair
, même si cela n'a jamais été utilisé au cours du siècle) - dans
textarea
, où il ajoute également des ‘\ r’ parasites qui ne comptent pas dans ses propres mécanismes de décompte des caractères
Cependant, peu importe cela, cela ne fonctionnera pas:
scission ("\ r \ n | \ r | \ n")
String.split de JavaScript, contrairement à Java, prend une simple chaîne de délimitation, pas un motif regex.