Sto usando javascript e voglio attraversare l'albero HTML, ottenendo tutto il testo così come appare all'utente. Tuttavia, sto perdendo informazioni sulla spaziatura.DOM Javascript, ottieni il testo del nodo senza perdere le informazioni sulla spaziatura
Diciamo che ho due documenti:
<html>XXX<p>YY YY</p><html>
<html>XXX<p>YY YY</p><html>
apparirà la prima con 1 spazio tra il Ys. Il secondo avrà 3 spazi. Tuttavia, se attraversare l'albero e, per ogni nodo #text, utilizzare:
text = node.nodeValue;
quindi il testo per entrambi i nodi avranno 3 spazi. Non so più quale abbia gli spazi "reali" nbsp. Posso usare node.innerHTML per gli elementi p, che mostrerà il nbsp, ma non penso di poter usare innerHTML per ottenere solo il testo XXX (senza una sorta di sottrazione di testo).
Potrei semplicemente ottenere innerHTML dell'intero documento e analizzarlo. Tuttavia, ho anche bisogno di ottenere lo stile calcolato di ciascun elemento, che ho intenzione di ottenere utilizzando
window.getComputedStyle(theElement).getPropertyValue("text-align");
Quindi, sarò attraversamento ogni nodo. Inoltre, innerHTML mostra la sorgente così com'è, mentre attraversa i nodi "ripara" gli errori HTML, aggiungendo i tag finali, ecc. Questa è una cosa buona e qualcosa che vorrei mantenere.
Interessante domanda. Puoi mostrare il tuo attuale codice trasversale per riferimento? –
Ho creato una funzione che chiamo ricorsivamente. La funzione ottiene il nodeName dell'elemento e, se è un elemento #text, ottiene il valore nodeValue. Per ogni bambino (element.childNodes) chiama la funzione, restituendo il nome e le informazioni sul valore. – user984003