我的 manifest.json 匹配每个 URL。因此,无论何时在 Chrome 中打开 URL,内容脚本都会被激活。
当前程序:
(1) 我的后台脚本将当前的空 URL 更新为某些内容。
(2) 我的内容脚本被激活,因为它与 manifest.json 匹配。我的内容脚本需要访问同一网站上的多个 URL。它单击链接并返回(= 一个选项卡中的所有内容)-> 内容脚本再次调用自身,因为打开了另一个 URL。
问题:
我不希望内容脚本多次调用自身。例如,它应该仅在从后台脚本收到一条新 URL 已打开的消息时才激活。
想法:
chrome.windows.onCreated.addListener(function()) 围绕着我在后台脚本中的所有代码。是否有与我正在寻找的内容脚本类似的内容?
可能是这样的:
- window.addEventListener
- 浏览器.runtime.onMessage.addListener
- 浏览器.runtime.sendMessage
- 浏览器.runtime.onMessage
- 浏览器.tabs.sendMessage()
但我不明白如何正确使用它们。
最佳答案
在你的后台脚本中,这样做:
chrome.windows.onCreated.addListener(function(tab) {
let msg = {txt: "execute"};
chrome.tabs.sendMessage(tab.id, msg);
};
然后在您的内容脚本中,您可以通过以下方式拦截此消息:
chrome.runtime.onMessage.addListener(function(msg){
if(msg.txt == "execute") {
doSomething();
}
});
文档在这里。 https://developer.chrome.com/extensions/runtime#method-sendMessage https://developer.chrome.com/extensions/runtime#event-onMessage
关于javascript - 如何阻止内容脚本自行启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59218415/