Perder nuevas líneas en contenido div en IE 7
-
06-07-2019 - |
Pregunta
Estoy tratando de dividir el texto interno de un div en las nuevas líneas en la fuente para ello. Esto funciona bien con:
$('div').text().split("\r\n|\r|\n")
Pero esto falla en IE 7, debido a que las nuevas líneas aparentemente se eliminan. jQuery 1.3.2 no parece tener la culpa ya que también probé ambos:
$('div')[0].innerText.split("\r\n|\r|\n")
y
$('div')[0].innerHTML.split("\r\n|\r|\n")
Tampoco funciona ninguno de los anteriores si cambio el div a un pre.
Parece que las nuevas líneas son una vez que la fuente se analiza en el DOM. :( ¿Es esto así? ¿No hay forma de llegar a ellos con JavaScript?
Solución
Las nuevas líneas son espacios en blanco, y generalmente no se conservan. Significan lo mismo que un espacio.
Otros consejos
Intente dividir en " \ n "
en lugar de " \ r \ n "
.
Para hacer ambas cosas, considere dividir en el patrón " \ r? \ n "
.
IE pierde nuevas líneas en el contenido del elemento, excepto:
- en
pre
(ytexto plano
, no es que se haya usado este siglo) - en
textarea
, donde también agrega urious \ r’s espurios que no cuentan para sus propios mecanismos de conteo de caracteres
Sin embargo, independientemente de eso, esto no funcionará:
división (" \ r \ n | \ r | \ n ")
String.split de JavaScript, en contraste con el de Java, toma una cadena de delimitador simple, no un patrón de expresiones regulares.