Javascript DOM, получить текст узла без потери информации о расстоянии - PullRequest
6 голосов
/ 08 марта 2012

Я использую javascript и хочу пройтись по дереву HTML, получая весь текст так, как он кажется пользователю. Однако я теряю информацию об интервале.

Допустим, у меня есть два документа:

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

<html>XXX<p>YY&nbsp;&nbsp;&nbsp;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, добавляет конечные теги и т. Д. Это хорошая вещь, которую я хотел бы оставить.

1 Ответ

1 голос
/ 08 марта 2012

Что делать, если вы тестируете по charCode? Я считаю, что обычный пробел - 32, а &nbsp; - 160.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...