gpt4 book ai didi

javascript - 在 HTML 文档的文本中搜索某些字符串(并替换它们)

转载 作者:太空宇宙 更新时间:2023-11-04 16:19:48 25 4
gpt4 key购买 nike

我正在编写一个 Firefox 扩展。我想遍历整个纯文本,而不是 Javascript 或图像源,并替换某些字符串。我目前有这个:

var text = document.documentElement.innerHTML;

var anyRemaining = true;
do {
var index = text.indexOf("search");
if (index != -1) {
// This does not just replace the string with something else,
// there's complicated processing going on here. I can't use
// string.replace().
} else {
anyRemaining = false;
}
} while (anyRemaining);

这可行,但它也会遍历非文本元素和 HTML(例如 Javascript),我只希望它处理可见文本。我怎样才能做到这一点?

我目前正在考虑检测左括号并继续处理下一个右括号,但可能有更好的方法来做到这一点。

最佳答案

您可以使用 xpath 获取页面上的所有文本节点,然后在这些节点上进行搜索/替换:

function replace(search,replacement){
var xpathResult = document.evaluate(
"//*/text()",
document,
null,
XPathResult.ORDERED_NODE_ITERATOR_TYPE,
null
);
var results = [];
// We store the result in an array because if the DOM mutates
// during iteration, the iteration becomes invalid.
while(res = xpathResult.iterateNext()) {
results.push(res);
}
results.forEach(function(res){
res.textContent = res.textContent.replace(search,replacement);
})
}

replace(/Hello/g,'Goodbye');
<div class="Hello">Hello world!</div>

关于javascript - 在 HTML 文档的文本中搜索某些字符串(并替换它们),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40748611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com