Я использую javascript и хочу пройтись по дереву HTML, получая весь текст так, как он кажется пользователю. Однако я теряю информацию об интервале.
Допустим, у меня есть два документа:
<html>XXX<p>YY YY</p><html>
<html>XXX<p>YY YY</p><html>
Первый появится с 1 пробелом между Ys. Второй будет иметь 3 пробела. Однако, если я пересекаю дерево и для каждого узла #text использую:
text = node.nodeValue;
тогда текст для обоих узлов будет иметь 3 пробела. Я больше не знаю, какой из них имеет "настоящие" пространства. Я могу использовать node.innerHTML для элементов p, который покажет nbsp, но я не думаю, что могу использовать innerHTML, чтобы получить только текст XXX (без какого-либо вычитания текста).
Я мог бы просто получить innerHTML всего документа и разобрать его. Тем не менее, мне также нужно получить вычисленный стиль каждого элемента, который я собираюсь получить, используя
window.getComputedStyle(theElement).getPropertyValue("text-align");
Итак, я буду обходить каждый узел. Кроме того, innerHTML показывает исходный код как есть, при обходе узлов «исправляет» ошибки html, добавляет конечные теги и т. Д. Это хорошая вещь, которую я хотел бы оставить.