我正在尝试使用预加载的东西来屏蔽 whatsappweb 上的电话号码,为了实现这一点,我查询父元素的子元素并检查它是否包含 +90 或 0 并将其替换为另一个文本并保持不变,那些没有 +90 或 0
我的初始代码是:
let contactNamesLength = contactNames.length;
console.log(contactNamesLength)
for (let i = 0; i < contactNamesLength; i++) {
const element = contactNames[i];
element.title = "";
if (element.textContent && element.innerText.includes("+90", 0) && !element.innerText.includes("REPLACEDTEXT")) {
element.innerText = element.textContent.replace(
/^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*/g,
"REPLACEDTEXT"
);
if (element.parentNode.className == "_3q9s6") {
element.innerText = element.textContent.replace(
/^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*/g,
"REPLACEDTEXT"
);
}
// changing group name on chatlist to Xx
if (element.parentNode.className == "Hy9nV") {
element.innerText = element.textContent.replace(
/^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*/g,
"REPLACEDTEXT"
);
}
}
}
问题是:
当我们在 whatsappweb 上滚动时,index(i) 会发生变化,它会替换文本,即使它不包含 0 或 +90
我的问题是:
有没有一种方法,即使添加了新孩子,我也可以一个一个地查询这些孩子?
我尝试了什么?
1 - 我尝试使用 forEach 代替 for 循环,但结果是一样的。
contactNames.forEach(child => {
// I tried to use forEach instead for loop but result was same.
});
2 - 也尝试使用 MutationObserver 但结果仍然相同。
我可能要解决的问题:
我可以重新呈现(刷新,重新加载)元素而不用 javascript 刷新整个页面吗?
编辑: