我想替换页面上的所有文本,例如:all "Hello" to "Hi"
我正在使用
body.innerHTML = body.innerHTML.replace("Hello", "Hi");
我遇到了两个问题:
- 可能有命名为
Hello
的类或id(例如<div id="Hello"></div>
,那么它会弄乱这个代码) - 由于某些原因,当我试图替换正文时Gmail崩溃了
因为这是chrome特定的,你不必担心旧的浏览器(咳 IE),这听起来像是treeWalker的工作。这里有一个很好的例子来说明如何使用它。
做innerHTML
的事情将垃圾所有的事件处理程序挂钩到页面上的元素,因为你在那里做的是破坏以前的元素和替换他们与新的。
要执行想要执行的操作,必须遍历dom并(仅)更新文本节点的值。在Stack Overflow的另一个答案中,有一个例子,有完整的代码和一个实时副本。你只需要改变handleText
函数的功能,就可以了。