使用 JavaScript 审查 HTML 页面中的单词



function DOMcensor(word) {
let regexwordfilter = `[ ^]?${word}[ $]?`
regexwordfilter = new RegExp(regexwordfilter,"gmi");
console.log(regexwordfilter);
let bodystring = document.body.innerHTML;
bodystring = bodystring.replace(regexwordfilter,` ${"*".repeat(word.length)} `);
document.body.innerHTML = bodystring;
}
DOMcensor("img")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<img src=https://www.jaipuriaschoolsbanaras.in/babatpur/wp-content/uploads/2016/11/blank-img.jpg>
<h1>img</h1>

我正在尝试制作一个函数来获取单词并在 html 文档中对其进行审查,但是如果单词包含在标签中,我制作的函数会导致一些问题,请参阅代码示例,它应该阻止 h1 标签内的 img,而不是名称中的 img 如果 img 标签,我如何指定我只想阻止文本而不是标签或标签的属性?

你可以写一个这样的函数:

function censorWord(el, word) { 
if (el.children.length > 0) { 
Array.from(el.children).forEach(function(child){ 
censorWord(child, word) 
}) 
} else { 
if (el.innerText) { 
el.innerText = el.innerText.replace(new RegExp(`\b${word}\b`, "g"), "***") 
} 
}  
}

censorWord(document.body, "someWord")

最新更新