使用Tampermonkey替换许多文本术语,而不影响url,也不查找类或id
Replace many text terms, using Tampermonkey, without affecting URLs and not looking for classes or ids
我正在为一个流行的电子商务SAAS编写一个Google Chrome扩展,它将在其管理面板内将英文文本字符串替换为西班牙语。
我已经有了一个解决方案,它取代了一切,所以当找到一个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、事件处理程序等;只需对web页面的TEXT_NODE
进行操作。不要使用innerHTML
对文本节点进行操作的有效方法是使用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;
}
相关文章:
- 使用RegExp查找url中的字符
- 在字符串中查找所有图像 src URL 并存储在数组中
- 需要URL模板占位符查找和替换功能的输入
- 使用Regex查找URL中的特定字符串
- $http GET URL更改并查找错误的资源
- Greasemonkey - 如何在以特定字符串开头的页面上查找并打开 aν URL
- JavaScript-按位置查找URL中的文本
- 从github url中查找用户、repo和路径
- 什么'用这个正则表达式查找URL是错误的
- 在Javascript中查找请求URL
- 查找任何未定义的变量并从url字符串中隐藏
- 使用Crossrider查找窗口并导航到URL
- 检查/查找 url 中是否有数组的任何单词
- eBay 查找 API findItemsByKeywords 返回“输入 URL 为标头 X-EBAY-SOA-OPE
- Javascript 正则表达式:查找所有 URL 优化
- 如何查找登录凭据发送到的 URL
- JS:在文本中查找URL,建立链接
- 将URL加载到iframe中并查找刚刚加载的HTML的值 - Jquery
- 按URL查找浏览器选项卡并将其关闭
- Python/Django:自动URL查找器+文本中的荧光笔