使用javascript在网页中查找和替换

5 javascript greasemonkey bookmarklet

我想要做的是用JS bookmarklet/greasemonkey脚本中的'bar'替换网页中'foo'的所有实例.我怎样才能做到这一点?我认为jQuery是有效的,因为在bookmarklet和greasemonkey脚本中都包含了hack.

Jos*_*ola 13

此脚本遍历文档中的每个元素并替换foowith的每个实例bar.

gi对正则表达式的修饰让它做一个全球性,不区分大小写的搜索.

var els = document.getElementsByTagName("*");
for(var i = 0, l = els.length; i < l; i++) {
  var el = els[i];
  el.innerHTML = el.innerHTML.replace(/foo/gi, 'bar');
}
Run Code Online (Sandbox Code Playgroud)

您可以通过更改"*"所选标签名称来定位特定标签名称(例如"p","td").

  • 为什么不只是`document.body.innerHTML.replace(/ foo/gi,'bar');`?按照建议抓取所有元素会在嵌套元素时导致递归替换. (3认同)
  • 修改innerHTML,其中包含每个元素的子元素,是一个非常糟糕的建议,因为它会破坏大量/大多数使用addEventListener和元素引用的页面.使用TreeWalker API:[替换多个文本而言,使用Tampermonkey,在不影响URL,而不会寻找类或IDS(// stackoverflow.com/a/24419809) (2认同)
  • 可能是因为它是一个有效的批评,这是谷歌在某些条款上的第一个结果,使其变得相当重要. (2认同)