javascript - 如何阻止内容脚本自行启动

标签 javascript google-chrome-extension

我的 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/

相关文章:

javascript - Android 中的 KeyPress 函数

javascript - Chrome 扩展 : intercept HTTP Response

javascript - chrome....onBeforeRequest...() URL 列表未按预期运行

javascript - 跟踪器计算在生产中不起作用

javascript - 如何使用marginLeft而不是scrollLeft用箭头水平滚动div?

visual-studio-2012 - 我可以获得 Chrome 应用程序和扩展程序的智能感知吗?

javascript - Chrome 扩展不会在第一次尝试时获取 URL

javascript - Chrome 扩展程序 : Inject JS before page load

javascript - 使用 Google Apps 脚本插入方括号和引号

Javascript 到 Excel : bad performance for lack of "range" method