Perdere nuove righe nel contenuto div in IE 7
-
06-07-2019 - |
Domanda
Sto provando a dividere il testo interno di un div sulle nuove righe nella fonte. Funziona bene con:
$('div').text().split("\r\n|\r|\n")
Ma questo fallisce in IE 7, a causa delle nuove righe apparentemente eliminate. jQuery 1.3.2 non sembra essere in errore poiché ho provato anche entrambi:
$('div')[0].innerText.split("\r\n|\r|\n")
e
$('div')[0].innerHTML.split("\r\n|\r|\n")
Nemmeno uno dei suddetti lavori se cambio div in pre.
Sembra che i newline siano una volta che l'origine viene analizzata nel DOM. :( È così? Non c'è modo di raggiungerli con JavaScript?
Soluzione
I newline sono spazi bianchi e generalmente non vengono conservati. Significano la stessa cosa di uno spazio.
Altri suggerimenti
Prova a dividere " \ n "
anziché " \ r \ n "
.
Per fare entrambe le cose, considera la divisione sul modello " \ r? \ n "
.
IE perde nuove righe nel contenuto dell'elemento, tranne:
- in
pre
(ein chiaro
, non che sia mai stato usato in questo secolo) - in
textarea
, dove aggiunge anche spurie che non contano per i propri meccanismi di conteggio dei personaggi
Tuttavia, indipendentemente da ciò, questo non funzionerà:
Split (" \ r \ n | \ r | \ n ")
String.split di JavaScript, contrariamente a quello di Java, accetta una semplice stringa delimitatore, non un modello regex.