我正在尝试开发Firefox扩展程序。
我有一个简单的需要。在测试的这个时候,我只想定义一个数组。按下按钮时,“当前窗口”将转到阵列中的第一个URL。再次按下该按钮时,它将转到数组中的下一个URL。
我的印象是我需要使用simple-storage
(ss.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);
}
}
});
答案 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;
}
...