我想在 Surge iOS 执行脚本,然后替换某网页的关键字。

2023-02-25 13:38:43 +08:00
 wclebb
// 需要替换的关键字
const targetText = "关键字";
// 替换成的文本
const replacementText = "被关键字替换";

// 遍历所有文本节点,替换关键字
function replaceText(node) {
if (node.nodeType === Node.TEXT_NODE) {
const text = node.textContent;
const replacedText = text.replaceAll(targetText, replacementText);
if (replacedText !== text) {
node.textContent = replacedText;
}
} else if (node.nodeType === Node.ELEMENT_NODE) {
const tagName = node.tagName.toLowerCase();
if (tagName !== "script" && tagName !== "style") {
const childNodes = node.childNodes;
for (let i = 0; i < childNodes.length; i++) {
replaceText(childNodes[i]);
}
}
}
}

// 替换文本,这个貌似不执行也不影响结果。
// replaceText(document.body);
// Surge 必须要有 done 最后。
$done()

——————

我在 Chrome 执行后确实能替换。
但在 Surge 报错,我不知道问题在哪。
696 次点击
所在节点    Surge
1 条回复
iX8NEGGn
2023-02-25 14:58:39 +08:00
你需要这样才行:

let body = $response.body;

//……对 body 进行替换的代码

$done({ body });

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/919108

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX