如何改变一个contentscript变量点击Chrome扩展的图标

How to change a contentscript variable on click on the icon of a Chrome extension?

本文关键字:Chrome 扩展 图标 变量 一个 何改变 改变 contentscript      更新时间:2023-09-26

我想通过点击我的Chrome扩展的图标来改变我的contentscript文件中的变量。你知道我该怎么做吗?

下面是我的代码示例:

background.js:

var myVariable = false;
chrome.browserAction.onClicked.addListener(function (tab) { //Fired when User Clicks ICON
  chrome.tabs.executeScript(tab.id, {
      "file": "zen-reading.js"
  }, function () {
      console.log("Script Executed .. ");
  });
  if (myVariable === false) {
    chrome.tabs.executeScript({
      code: 'myVariable = ' + true + ';'
    });
    myVariable = true;
  }
  else {
    chrome.tabs.executeScript({
      code: 'myVariable = ' + false + ';'
    });
    zenMode = myVariable;
  }
});

contentscript.js:

if (myVariable === true) {
  doSomething();
}
if (myVariable === false) {
  doSomethingElse();
}
  • 方法一:将内容脚本分成两部分,根据myVariable的不同注入其中一个。
  • 方法2:在注入脚本文件之前注入设置变量的代码:

    chrome.tabs.executeScript(tab.id, {
        code: "var myVariable=" + myVariable.toString()
    }, function(results) {
        chrome.tabs.executeScript(tab.id, {file: "zen-reading.js"}, function(results) {
            ..........
        });
    });
    

    如果不是布尔值/数字,使用JSON:

    code: 'var myVariable=JSON.parse("' + JSON.stringify(myVariable) + '")'
    
  • 方法三:注入文件一次,使用消息传递。这有点复杂,因为你需要先检查(使用executeScript将寻找一个变量,你的内容脚本应该定义),如果活动选项卡有内容脚本注入,这可能不是情况,如果用户导航到另一个url在同一选项卡