如何在重新启用时重置我的Chrome扩展程序?

时间:2017-05-12 23:15:36

标签: javascript google-chrome google-chrome-extension

我制作了Chrome扩展程序,当您单击图标background.js时,执行内容脚本并从“关闭”图标更改为“打开”图标。

问题是,当我禁用扩展程序,然后重新启用时,内容脚本未加载,但当我希望它默认为“关闭”时,图标仍然显示为“打开”,因此用户知道他们需要重新点击才能激活。

这是我的background.js脚本:

var turnedOff = true;
var loadScript = true;

chrome.runtime.onStartup.addListener(function () {
    chrome.browserAction.setIcon({path:"red.png"});
});

  chrome.browserAction.onClicked.addListener(function (tabId, changeInfo, tab) {
      if (loadScript == true) {
          loadScript = false;
          chrome.browserAction.setIcon({path:"green.png"});
          chrome.tabs.query( {} ,function (tabs) { 
          for (var i = 0; i < tabs.length; i++) {
            chrome.tabs.executeScript(tabs[i].id, {file: "content.js"});
          }
        });
      }
     else if (turnedOff == true) {
        turnedOff = false;
        chrome.browserAction.setIcon({path:"green.png"});
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
        chrome.tabs.sendMessage(tabs[0].id, {action: "On"}, function(response) {});
        });
     }
     else if (turnedOff == false) {
        turnedOff = true;
        chrome.browserAction.setIcon({path:"red.png"});
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
        chrome.tabs.sendMessage(tabs[0].id, {action: "Off"}, function(response) {});
        });
     }
  });

这是我的manifest.json:

{
   "background": {
      "scripts": [ "background.js", "jquery-3.1.1.min.js" ],
      "persistent": false
   },
   "browser_action": {
       "name" : "hjfdsfhdks"
   },
   "icons" : {
       "16" : "red.png",
       "48" : "red.png",
       "128" : "red.png"
   },
   "description": "Replace Facebook color-background posts with Kanye West quotes to match the bold, brazen, attention-grabbing aesthetic.",
   "manifest_version": 2,
   "name": "Ye'sbook",
   "permissions": [ "<all_urls>" ],
   "update_url": "https://clients2.google.com/service/update2/crx",
   "version": "1.2",
   "web_accessible_resources": [ "images/*.png" ]
}

请原谅,如果它看起来不干净,我只是想在重构之前让它工作,并且不熟悉Chrome扩展程序。

值得注意的是:完全关闭Chrome后,background.js会正确重新加载,但不会重新启用。另外,我在后台加载内容脚本而不是使用manifest.json句柄的原因是,我希望此事件在单击时立即发生,而不是仅在页面刷新时加载内容脚本。

0 个答案:

没有答案