Safari Web 扩展 - 仅在单击扩展按钮时注入脚本
Safari Web Extension - injecting script only when extension button is clicked
为简单起见,我参考了 Apple 的 SeaCreator 扩展示例。
您可以从这里获取:https://drive.google.com/file/d/1loBDgkJAEtyh0QehOUlgOSyUnW9ZZDk6/view?usp=sharing
在上述示例中,我们用不同的表情符号替换鱼名。
问题是,当我们点击扩展图标时,它会变成蓝色,表示扩展处于活动状态,并且无论何时呈现任何页面,所有鱼名都会自动替换为表情符号。
查看截图 ->
我需要的是我不想让扩展一直处于活动状态,我希望仅在按下扩展按钮时才执行替换操作。因此,每当我打开一个新网页时,我必须先按下扩展工具栏按钮,然后才能进行替换。
在我附加的代码中,我确实尝试了一些东西,但 none 帮助。
//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");
我总是面对 -> undefined browser
或 undefined chrome
.
在我最初的扩展项目中,我使用了节点模块,AJAX 也有很多依赖项,所以我参考了 Apple 的示例。
主要是我想关闭自动脚本注入,只在用户点击扩展按钮时执行我的脚本代码。我不需要弹出窗口 - 只需点击按钮即可执行。
如果有人可以提供帮助,请告诉我。
哦,这太奇怪了。我得到它太晚了,除了 'content_script' 键之外,我还必须在 manifest.json 中包含 background
脚本键。
"background" : {
"scripts" : [
"bundle.js"
]
},
"content_scripts": [{
"js": [ "init.bundled.js" ],
"matches": [ "<all_urls>" ]
}]
我已经在 bundle.js
中编写了 chrome.browserAction.onClicked...
方法,每次我从 Safari 工具栏按下扩展按钮时都会调用该方法。
哇。
为简单起见,我参考了 Apple 的 SeaCreator 扩展示例。
您可以从这里获取:https://drive.google.com/file/d/1loBDgkJAEtyh0QehOUlgOSyUnW9ZZDk6/view?usp=sharing
在上述示例中,我们用不同的表情符号替换鱼名。
问题是,当我们点击扩展图标时,它会变成蓝色,表示扩展处于活动状态,并且无论何时呈现任何页面,所有鱼名都会自动替换为表情符号。
查看截图 ->
我需要的是我不想让扩展一直处于活动状态,我希望仅在按下扩展按钮时才执行替换操作。因此,每当我打开一个新网页时,我必须先按下扩展工具栏按钮,然后才能进行替换。
在我附加的代码中,我确实尝试了一些东西,但 none 帮助。
//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");
我总是面对 -> undefined browser
或 undefined chrome
.
在我最初的扩展项目中,我使用了节点模块,AJAX 也有很多依赖项,所以我参考了 Apple 的示例。
主要是我想关闭自动脚本注入,只在用户点击扩展按钮时执行我的脚本代码。我不需要弹出窗口 - 只需点击按钮即可执行。
如果有人可以提供帮助,请告诉我。
哦,这太奇怪了。我得到它太晚了,除了 'content_script' 键之外,我还必须在 manifest.json 中包含 background
脚本键。
"background" : {
"scripts" : [
"bundle.js"
]
},
"content_scripts": [{
"js": [ "init.bundled.js" ],
"matches": [ "<all_urls>" ]
}]
我已经在 bundle.js
中编写了 chrome.browserAction.onClicked...
方法,每次我从 Safari 工具栏按下扩展按钮时都会调用该方法。
哇。