2012-03-08 14 views
6

espaciamiento estoy usando javascript y quiero recorrer el árbol HTML, recibiendo todo el texto tal como aparece para el usuario. Sin embargo, estoy perdiendo información de espaciado.Javascript DOM, llegar texto del nodo sin perder información

Digamos que tengo dos documentos:

<html>XXX<p>YY YY</p><html> 

<html>XXX<p>YY&nbsp;&nbsp;&nbsp;YY</p><html> 

El primero aparecerá con 1 espacio entre el Ys. El segundo tendrá 3 espacios. Sin embargo, si recorrer el árbol y, para cada nodo #text, utilice:

text = node.nodeValue; 

entonces el texto para ambos nodos tendrán 3 espacios. Ya no sé cuál tiene los espacios nbsp "reales". Puedo usar node.innerHTML para los elementos p, que mostrarán el nbsp, pero no creo que pueda usar innerHTML para obtener solo el texto XXX (sin algún tipo de resta de texto).

tan sólo pudiera conseguir innerHTML de todo el documento y procesarla. Sin embargo, también necesito conseguir el estilo computado de cada elemento, lo que voy a conseguir usando

window.getComputedStyle(theElement).getPropertyValue("text-align"); 

Por lo tanto, voy a atravesar cada nodo. Además, innerHTML muestra la fuente tal como está, mientras que atraviesa los nodos "corrige" errores html, agrega etiquetas finales, etc. Eso es algo bueno y algo que me gustaría conservar.

+0

Pregunta interesante. ¿Puedes mostrar tu código de cruce actual como referencia? –

+0

Creé una función que llamo recursivamente. La función obtiene el nodeName del elemento y, si es un elemento #text, obtiene el nodeValue. Para cada elemento secundario (element.childNodes) llama a la función y devuelve el nombre y la información del valor. – user984003

Respuesta

1

¿Qué sucede si prueba con charCode? Creo que un espacio regular es 32, mientras que &nbsp; es 160.

+0

¡Tienes razón! Lo probé y funciona. Entonces la información no está realmente perdida. Es solo que, en la forma en que lo vi, ambos se muestran como espacios. Sabiendo esto, probablemente también pueda encontrar otras formas de obtener la información (por ejemplo, en mi código python, después de enviar la información en el formulario). Ahora también necesito pensar qué otras conversiones necesito hacer. Supongo que todas las entidades html, etc. ¡Gracias! – user984003

Cuestiones relacionadas