Ich verwende Javascript und möchte den HTML-Baum durchlaufen, um den gesamten Text so zu erhalten, wie er dem Benutzer angezeigt wird. Ich verliere jedoch Informationen über die Abstände.
Nehmen wir an, ich habe zwei Dokumente:
<html>XXX<p>YY YY</p><html>
<html>XXX<p>YY YY</p><html>
Das erste wird mit 1 Leerzeichen zwischen den Ys erscheinen. Das zweite wird 3 Leerzeichen haben. Wenn ich jedoch den Baum durchlaufe und für jeden #Text-Knoten verwende:
text = node.nodeValue;
dann hat der Text für beide Knotenpunkte 3 Leerzeichen. Ich weiß nicht mehr, welcher der beiden Knoten die "echten" nbsp Leerzeichen hat. Ich kann node.innerHTML für die p-Elemente verwenden, die die nbsp zeigen wird, aber ich glaube nicht, dass ich innerHTML verwenden kann, um nur den XXX-Text zu erhalten (ohne irgendeine Art von Text Subtraktion).
Ich könnte einfach innerHTML des gesamten Dokuments abrufen und dieses analysieren. Ich muss jedoch auch den berechneten Stil jedes Elements abrufen, den ich mit
window.getComputedStyle(theElement).getPropertyValue("text-align");
Ich werde also jeden Knoten durchlaufen. Außerdem zeigt innerHTML die Quelle so an, wie sie ist, während das Durchlaufen der Knoten HTML-Fehler "behebt", indem End-Tags hinzugefügt werden usw. Das ist eine gute Sache und etwas, das ich gerne beibehalten möchte.