【发布时间】:2020-07-07 11:57:17
【问题描述】:
为了简单起见,我参考了 Apple 的 SeaCreator 扩展示例。
您可以从这里获取:https://drive.google.com/file/d/1loBDgkJAEtyh0QehOUlgOSyUnW9ZZDk6/view?usp=sharing
在上面提到的这个例子中,我们用不同的表情符号替换鱼的名字。
问题是当我们点击扩展图标时,它会变成蓝色,表示扩展处于活动状态,并且每当呈现任何页面时,所有鱼名都会自动替换为表情符号。
我需要的是我不想让扩展始终处于活动状态,我希望仅在按下扩展按钮时才执行替换操作。因此,每当我打开一个新网页时,我都必须按下扩展工具栏按钮,然后才能完成替换。
在我附加的代码中,我确实尝试了一些东西,但没有任何帮助。
//browser.runtime.addEventListener("message", handleMessage, false);
//function handleMessage(msgEvent) {
// alert('message received');
var wordReplacementMap = {"Fish": "????", "Shark": "????", "Squid": "????", "Whale": "????"};
for (var wordToReplace in wordReplacementMap) {
replace(document.body, wordToReplace, wordReplacementMap[wordToReplace]);
}
//}
//chrome.runtime.sendMessage("message");
我总是面对 -> 未定义的browser 或未定义的chrome。
在我最初的扩展项目中,我也使用了节点模块和 AJAX,所以有很多依赖项,所以我确实参考了 Apple 的示例。
主要是我想关闭自动脚本注入,只在用户点击扩展按钮时执行我的脚本代码。我不需要弹出窗口 - 只需点击按钮即可执行。
如果有人可以提供帮助,请告诉我。
【问题讨论】:
标签: javascript swift safari-extension manifest.json sfsafariviewcontroller