javascript - 打开和关闭 Chrome 扩展

标签 javascript google-chrome google-chrome-extension google-chrome-devtools

我正在开发一个 Chrome 扩展程序,该扩展程序在浏览器操作中有 2 个图标(打开和关闭); 基本上当它在后台执行 script.js (注入(inject)文件:script.js) 使用 chrome.tabs.executeScript(tab.id,{file:"script.js",function(){});

我在关闭它时遇到问题! 我尝试在background.js和script.js之间使用消息通信,但这也不起作用。

最佳答案

如果我理解正确的话,您的扩展程序应该有两种状态:打开和关闭。单击扩展图标可打开/关闭它。

在这种情况下,您应该使用存储,以便扩展程序知道它处于什么状态。因此,在点击事件中,使用如下内容:

  chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.storage.sync.get('state', function(data) {
      if (data.state === 'on') {
        chrome.storage.sync.set({state: 'off'});
        //do something, removing the script or whatever
      } else {
        chrome.storage.sync.set({state: 'on'});
        //inject your script
      }
    });
  });

请注意,这发生在扩展程序/浏览器级别,并将应用于所有选项卡,因此您可能需要更复杂的东西来记录选项卡 ID 和状态。

然后,您可以选择始终运行内容脚本并在执行某些操作之前检查开/关状态,或者注入(inject)并删除脚本。我不确定你是否删除了脚本。根据脚本的作用,您可能只想刷新页面(即,如果您的脚本与 DOM 发生冲突,并且您希望在关闭扩展时撤消该操作)。

关于javascript - 打开和关闭 Chrome 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010623/

相关文章:

javascript - 如何使用 localStorage 中的数据渲染 React 组件?

html - 导航菜单幽灵

google-chrome - Chrome devtools 配置文件火焰图中的这个差距是什么意思

javascript - 在 chrome 中点击 setSelectionRange 不会在第二次点击时选择

javascript - Chrome 扩展 window.history 失败...但为什么呢?

jquery - 如何将 css 属性设置为具有特定属性的标签?

javascript - 如果不满足条件,如何在 Dropzone.js 中取消/中止上传?

javascript - 使用 RegEx 排除某些字符

javascript - 转换为 JSONArray

javascript - Google Chrome 扩展程序权限问题,与 Google 文档(仅限)