Как сохранить и извлечь переменную из массива с помощью SDK надстройки Firefox? - PullRequest
1 голос
/ 19 января 2012

Я пытаюсь разработать расширение для Firefox.

У меня простая потребность. В это время в тестировании я просто хочу определить массив. Когда кнопка нажата, текущее окно переходит к первому URL в массиве. Когда кнопка нажата снова, она переходит к следующему URL в массиве.

У меня сложилось впечатление, что мне нужно сохранить текущую последовательность в массиве, используя simple-storage (ss.storage), но я не могу заставить ее работать. Я подумал, что, возможно, смогу сохранить информацию о последовательности, используя Cookie, но 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 Ответ

1 голос
/ 19 января 2012

Если я правильно понимаю, что вы пытаетесь сделать - вам не нужно постоянное хранилище, подойдет обычная глобальная переменная.Глобальная переменная указывает индекс массива, в котором вы находитесь прямо сейчас.Как то так:

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;
}

...
...