Chrome扩展替换文本



我想替换页面上的所有文本,例如:all "Hello" to "Hi"

我正在使用

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

我遇到了两个问题:

  1. 可能有命名为Hello的类或id(例如<div id="Hello"></div>,那么它会弄乱这个代码)
  2. 由于某些原因,当我试图替换正文时Gmail崩溃了

因为这是chrome特定的,你不必担心旧的浏览器( IE),这听起来像是treeWalker的工作。这里有一个很好的例子来说明如何使用它。

innerHTML的事情将垃圾所有的事件处理程序挂钩到页面上的元素,因为你在那里做的是破坏以前的元素和替换他们与新的。

要执行想要执行的操作,必须遍历dom并(仅)更新文本节点的值。在Stack Overflow的另一个答案中,有一个例子,有完整的代码和一个实时副本。你只需要改变handleText函数的功能,就可以了。

最新更新