如何在内容脚本中创建一个可在所有页面上访问的变量

时间:2014-11-03 13:20:21

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

我有一个内容脚本,其中有一个名为myscript.js的脚本,现在我已经这样做了,如果google.com上的一个页面加载,那么setA的修改就完成了,否则就完成了setB的修改。现在我想要一个可以从该浏览器上打开的所有网页访问的变量。就像我们在java中有静态变量一样,同一个变量可以被类的所有对象访问,使用这个类比,静态变量是全局变量,对象是加载的网页

1 个答案:

答案 0 :(得分:1)

如果您需要在内容描述的每个实例(以及其他扩展页面)中提供某些内容,您可以使用chrome.storage API

一个小小的缺点是API是异步的:

var myValue;
chrome.storage.local.get({myKey: "myDefault"}, function(data) {
  myValue = data["myKey"];
  // You can use myValue here..
});
// ..but not here

如果您可以链接异步代码,这很好;否则,您可以维护本地副本并在onChanged上更新,而不是每次都使用get

  chrome.storage.onChanged.addListener(function(changes, area) {
    if(area == "local" && changes["myKey"]) {
      myValue = changes["myKey"].newValue;
    }
  });