保留不同选项卡之间的切换

我正在开发一个Google Chrome扩展程序,您应该可以使用扩展程序工具栏中的符号打开和关闭该功能。此切换应该是通用的,这意味着无论您在何处打开或关闭它,当前状态都将保留在任何地方。无论您在哪个标签页或窗口中,状态都随处可见。


就我们的示例而言,我们应该写“我在!”。打开控制台,然后按A键。如果关闭了电源,然后按A,则会显示“我关闭了!”。


manifest.json:


{

  "name": "Test Extension",

  "version": "1.0",

  "manifest_version": 2,

  "description": "Just a test for Stack Overflow.",

  "browser_action": {

    "default_icon": "images/icon.png"

  },

  "background": {

    "scripts": ["background.js"]

  },

  "content_scripts": [

    {

      "matches": ["<all_urls>"],

      "js": ["content.js"]

    }

  ]

}

background.js:


var extensionMode = true;


chrome.browserAction.onClicked.addListener(function(tab) {


  extensionMode = !extensionMode;


  if(extensionMode) {

    chrome.browserAction.setIcon({

      path : "images/icon.png"

    });

  } else {

    chrome.browserAction.setIcon({

      path : "images/icon_disabled.png"

    });

  }


  let msg = {

    extensionMode: extensionMode

  }


  chrome.tabs.sendMessage(tab.id, msg);

});

content.js:


var extensionMode = true;


chrome.runtime.onMessage.addListener(gotMessage);


function gotMessage(message, sender, sendResponse) {

  extensionMode = message.extensionMode;

}


onkeydown = onkeyup = function(e){

  if(extensionMode) {

    if(event.keyCode == 65) { // A

        console.log("I'm on!");

    }

  } else {

    if(event.keyCode == 65) { // A

        console.log("I'm off!");

    }

  }

}

上面的代码在您停留在选项卡中时起作用,但在切换时不起作用...图标将保持禁用状态,但是extensionMode实际上会恢复为true。


我在这里做错了什么?这是我尝试做的错误方法吗?


慕丝7291255
浏览 166回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript