gpt4 book ai didi

javascript - 使用 Tampermonkey 替换许多文本术语,不影响 URL,也不查找类或 id

转载 作者:行者123 更新时间:2023-11-28 12:28:58 25 4
gpt4 key购买 nike

我正在为一个流行的电子商务 SAAS 编写一个 Google Chrome 扩展程序,它将在其管理面板中将英语文本字符串替换为西类牙语。

我提出了一个可以替换所有内容的解决方案,因此当查找 a href 时,它也会替换它,这是不需要的:

var els = document.getElementsByTagName("*");
for(var i = 0, l = els.length; i < l; i++) {
var el = els[i];
// ==Menu_left_dropdown==
el.innerHTML = el.innerHTML.replace(/View your user account/gi, 'Tu cuenta');
el.innerHTML = el.innerHTML.replace(/Terms of service/gi, 'Términos y condiciones');
el.innerHTML = el.innerHTML.replace(/Privacy policy/gi, 'Privacidad');
el.innerHTML = el.innerHTML.replace(/Log out/gi, 'Salir');
// ==Menu_left=
el.innerHTML = el.innerHTML.replace(/Search/gi, 'Buscar');
el.innerHTML = el.innerHTML.replace(/Dashboard/gi, 'Panel');
el.innerHTML = el.innerHTML.replace(/Orders/gi, 'Pedidos');
el.innerHTML = el.innerHTML.replace(/Customers/gi, 'Clientes');
el.innerHTML = el.innerHTML.replace(/Products/gi, 'Productos');
}

通过类或 ID 获取元素并不容易维护,因为它们可能会在平台不通知我们的情况下发生变化。我还计划添加更多语言环境,因此任何有关如何采用更简洁的方式组织字符串的建议都会很棒。

最佳答案

避免丢弃 URL、ID、事件处理程序等;您只需对网页的 TEXT_NODE 进行操作。切勿使用 innerHTML

作用于文本节点的有效方法是使用 a Tree Walker .

对于替换项,请使用数组。

把它们放在一起,代码如下所示:

var replaceArry = [
[/View your user account/gi, 'Tu cuenta'],
[/Terms of service/gi, 'Términos y condiciones'],
[/Privacy policy/gi, 'Privacidad'],
// etc.
];
var numTerms = replaceArry.length;
var txtWalker = document.createTreeWalker (
document.body,
NodeFilter.SHOW_TEXT,
{ acceptNode: function (node) {
//-- Skip whitespace-only nodes
if (node.nodeValue.trim() )
return NodeFilter.FILTER_ACCEPT;

return NodeFilter.FILTER_SKIP;
}
},
false
);
var txtNode = null;

while (txtNode = txtWalker.nextNode () ) {
var oldTxt = txtNode.nodeValue;

for (var J = 0; J < numTerms; J++) {
oldTxt = oldTxt.replace (replaceArry[J][0], replaceArry[J][1]);
}
txtNode.nodeValue = oldTxt;
}

关于javascript - 使用 Tampermonkey 替换许多文本术语,不影响 URL,也不查找类或 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24417791/

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