Замена текста только внутри указанного узла, а не внутри дочерних узлов - PullRequest
0 голосов
/ 13 ноября 2009

Я нашел сценарий GreaseMonkey на Userscripts, который исправляет орфографию и некоторую грамматику, которую я пытаюсь улучшить для использования в Reddit и т. Д. Мне помогли улучшить его, и это - мой текущая версия, которая работает довольно хорошо.

Однако существует проблема в том, что он выделяет курсивом, полужирным шрифтом и ссылками. Я хотел бы, чтобы скрипт игнорировал все дочерние узлы или, по крайней мере, те, которые имеют em (курсив), сильный (жирный шрифт) или a (ссылка). Я много пробовал искать и читать, но пока не нашел способа сделать это. Похоже, что для других целей каждый хочет, чтобы их сценарий работал и на детей.

Я полагаю, что есть разные способы сделать это - возможно, предотвратить это, в первую очередь включить их, сразу же удалить их или запретить работу цикла замены, если они удовлетворяют некоторым критериям. К сожалению, я не очень разбираюсь в javascript, поэтому и спрашиваю здесь.

1 Ответ

0 голосов
/ 13 ноября 2009

попробуйте изменить свой xpath с

//div[@class='md']//text()

до

//div[@class='md']//*[not(self::em or self::strong or self::a)]/text()

это должно предотвратить изменение всех узлов em, strong и a.

...