为了简单起见,我参考了来自苹果的SeaCreator扩展示例。
你可以从这里拿下来:https://drive.google.com/file/d/1loBDgkJAEtyh0QehOUlgOSyUnW9ZZDk6/view?usp=sharing
在这个例子中,我们用不同的表情符号替换鱼名。
问题是,当我们点击扩展图标时,它会变成蓝色,以表示扩展是活动的,并且每当呈现任何页面时,所有的鱼名都会被自动替换为emojis。
见截图->
我需要的是,我不想让扩展总是处于活动状态,我希望只有当我按下扩展按钮时才能执行替换操作。因此,每当我打开一个新的网页,我必须按下扩展工具栏按钮,只有当替换应该完成。
在我附加的代码中,我确实尝试了很少的东西,但没有任何帮助。
//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的例子。
主要是我想关闭自动脚本注入,只在用户点击扩展按钮时执行我的脚本代码。我不需要弹出-只是按下按钮执行。
如果有人能帮忙请告诉我。
发布于 2020-07-19 08:13:13
哦,太奇怪了。我知道得太晚了,所以除了“background
”键之外,还必须在manifest.json中包含content_script脚本键。
"background" : {
"scripts" : [
"bundle.js"
]
},
"content_scripts": [{
"js": [ "init.bundled.js" ],
"matches": [ "<all_urls>" ]
}]
我已经在chrome.browserAction.onClicked...
中编写了bundle.js
方法,每次我按下Safari工具栏中的扩展按钮时都会调用这个方法。
呼。
https://stackoverflow.com/questions/62774734
复制相似问题