-1

我花了很长时间尝试和解决这个问题,但没有看到你看到的运气,因为我对 javascript 还很陌生。我正在制作一个 google chrome 扩展程序,我希望阻止用户定义的页面上的某些单词,但我希望在没有 getelementbyid 的情况下执行此操作,因为他们不会有我想要的 id 的网页。例如,让用户输入他或她希望阻止的词,然后这些词将在他们访问的任何网页上被替换。帮助很大。到目前为止,我所拥有的只是通过 id 而不是标签获取元素

4

3 回答 3

1

文本可以在任何元素中,所以getElementsByTagName不会有太大用处。

相反,请考虑遍历所有节点。查找类型 3 的节点(文本节点),并替换它们的内容。

从 开始document.body,获取它的.children[],然后递归循环。

于 2013-01-06T07:15:49.863 回答
0

这是一个工作示例:http: //jsfiddle.net/cmontgomery/V45LS/

秘制酱料:

soapInTheMouth = function(node) {
  var allNodes = node.childNodes;
  $.each(allNodes, function(i,n) {
    if(n.nodeType === 3) {
      n.nodeValue = n.textContent.replace(/shit/g,'crap');
    } else {
      soapInTheMouth(n);
    }
  });
}
于 2013-01-06T08:19:14.583 回答
0

谢谢你们,但我代表我修复了它只是一个语法错误

于 2013-08-20T07:43:41.713 回答