js获取网页当中body里所有标签里面的指定汉字并进行批量替换

js获取网页当中body里所有标签里面的指定汉字并进行批量替换,不获取标签属性 只获取标签里的所指定汉字内容并批量替换成空白或者自定义汉字。

大神该怎么写呀 网上有好多办法 就是在body标签里 加id 但是有好多页面呢 加id肯定不行呀、、、

我写了代码如下, 测试可行, 供参考:

//主要靠这个函数实现: 将body下的文本节点中的searchWord, 替换为replaceWord
function replaceBodyText(searchWord, replaceWord){
    var reg = new RegExp(searchWord, 'g');
    function replaceNode(node){
        node.childNodes.forEach(function(v){
            if(v.nodeName === 'SCRIPT')
                return; //排除<script>标签
            if(!v.hasChildNodes()){
                if(reg.test(v.textContent))
                    v.textContent = v.textContent.replace(reg, replaceWord);
                return;
            }
            replaceNode(v);
        });
    }
    replaceNode(document.body);
}

//绑定一个事件测试用, 点击这个按钮后才会执行;
document.querySelector('#testBtn').addEventListener('click', function(){
    replaceBodyText('中国', '美国');
});

//实际使用中直接调用函数即可:
//以下语句表示将所有文本节点中的"中国"替换为"美国:
//replaceBodyText('中国', '美国');

追问

是这样写屏蔽关键词吗   依次写下去 其他地方不动

追答

你将"//绑定一个事件测试用"后的内容全部删掉, 这是我的举例说明使用方法, 你的页面没这个按钮, 你放在那里不起作用的.

也就是将你的代码从第43行开始的内容删掉, 自己写上replaceBodyText('我', '你'); 有多少个写多少个. 这样你的网页一打开, 就是替换后的效果.

或者通过循环语句简化, 例如:

[['我', '你'],['好', '不好'], ['他','你'],['女','男']].forEach(function(item){
    replaceBodyText(item[0], item[1]);
});

追问

你的办法我做到了   html所有都替换成功了   可是为什么浏览器显示的标题 没有改变呢

还有一个问题上面写到 排除js   意思就是不予其他js冲突是吗

追答

    标题不是在body里面, 是在head里面的<title></title>标签里. 可以将我的代码中第14行从replaceNode(document.body)修改为replaceNode(document);

    排除script, 原因是body里面可以内嵌<script></script>, 而这里面可以放js代码, js代码并不会显示在页面中,只是起到逻辑控制, 所以可以肯定这里面的文字是不能被替换的, 如果替换了可能导致意外的错误.

追问

如果需要替换的话可以把我的代码中第15行的replaceNode(document.body);修改为replaceNode(document);
修改了 浏览器标题没有生效呢

追答

那奇怪了, 我这边测试可以的呢, 可以将你的代码和HTML截个图吗; 另外一种可能性就是和浏览器有关, 我用的是chrome.

温馨提示:答案为网友推荐,仅供参考
相似回答