如何使用Firefox Add-on SDK从数组中存储和检索变量?

时间:2012-01-19 03:20:56

标签: firefox firefox-addon firefox-addon-sdk

我正在尝试开发Firefox扩展程序。

我有一个简单的需要。在测试的这个时候,我只想定义一个数组。按下按钮时,“当前窗口”将转到阵列中的第一个URL。再次按下该按钮时,它将转到数组中的下一个URL。

我的印象是我需要使用simple-storagess.storage)将当前序列存储在数组中,但我无法使其工作。我想也许我可以使用Cookie存储序列信息,但Add-on SDK看起来非常严格。也许有一个更简单的方法,但我似乎无法确定那将是什么。

当前状态 - 按下按钮时,代码会为阵列中的每个URL打开三个单独的窗口。如果你能帮我修改这段代码,那么每次按下按钮时都会从数组中打开一个URL - 如上所述。

require("widget").Widget({

  id: "view-source-widget",
  label: "View Source",
  contentURL: "http://www.mozilla.org/favicon.ico",
  onClick: function() {

    var arr = new Array("one.com","two.com","three.com");

    for(var i=0; i<arr.length; i++) {

      var value = arr[i];   
      var ss = require("simple-storage");
      ss.storage.myURL= value;

      var windows = require("windows").browserWindows;
      windows.open(ss.storage.myURL);    

    }
  }

});

1 个答案:

答案 0 :(得分:1)

如果我理解你正在尝试做什么 - 你不需要持久存储,一个普通的全局变量就可以。全局变量表示您现在所在的数组索引。像这样:

var urls = ["one.com","two.com","three.com"];
var urlIndex = 0;

...

onClick: function() {
  var windows = require("windows").browserWindows;
  windows.open(urls[urlIndex]);

  // Increase index for the next click
  urlIndex++;
  if (urlIndex >= urls.length)
    urlIndex = 0;
}

...