Расширение Chrome заменить текст - PullRequest
3 голосов
/ 27 июля 2011

Я хочу заменить весь текст на странице, например: все «Привет» на «Привет»

Я сейчас использую

body.innerHTML = body.innerHTML.replace("Hello", "Hi");

Я столкнулся с двумя проблемами:

  1. там могут быть классы или идентификаторы с именем Hello (например, <div id="Hello"></div>, тогда это может испортить этот код)
  2. Дляпочему-то глючит Gmail при попытке заменить тело

Ответы [ 2 ]

4 голосов
/ 27 июля 2011

Поскольку это специфично для Chrome, и вам не нужно беспокоиться о старых браузерах ( кашель IE), это звучит как работа для treeWalker . Вот хороший пример того, как его использовать здесь .

1 голос
/ 27 июля 2011

При выполнении этой операции innerHTML будут уничтожены все обработчики событий, подключенные к элементам на странице, потому что то, что вы делаете там, уничтожает предыдущие элементы и заменяет их новыми.

Чтобы делать то, что вы хотите, вам нужно пройтись по дому и обновить значения текстовых узлов (только).Вот пример с полным кодом и живой копией , в этот другой ответ здесь, на переполнение стека .Вам просто нужно изменить то, что делает функция handleText, и все готово.

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