如何像谷歌翻译一样在 HTML 中替换所有文本?
如何像谷歌翻译那样替换 html 中的所有文本
要像谷歌翻译页面一样翻译 html 中的文本,同时保持 html 代码不变,可以按照以下步骤操作:
- 获取所有有内容的文本节点
可以使用 array.from($$('*')) 遍历所有 html 元素,并使用 filter 筛选出具有文本节点(nodename == '#text')且文本内容不为空(v.textcontent.trim())的元素。
const textnodes = array.from($$('*')).filter(v => array.from(v.childnodes).filter(v => v.nodename == "#text" && v.textcontent.trim())?.length);
- 遍历节点内容并替换
获取到包含文本内容的节点后,可以遍历这些节点并执行翻译操作,然后将翻译后的文本替换回原始节点中。
立即学习“前端免费学习笔记(深入)”;
- 示例代码
完整的代码示例如下:
Array.from($$('*')).filter(v => Array.from(v.childNodes).filter(v => v.nodeName == "#text" && v.textContent.trim())?.length).forEach(v => { // 执行翻译操作 const translatedText = translate(v.textContent); // 替换回原始节点 v.textContent = translatedText;});