проблема с переменной (расширение firefox) - PullRequest
0 голосов
/ 20 августа 2009

Я пытаюсь сделать расширение Firefox, которое отображает две кнопки: 1 и 2. Когда вы нажимаете кнопку 1, чтобы получить значение пути, то есть адрес текущей открытой страницы, то новая вкладка открывается и становится активной. В этой вкладке есть кнопка 2, которая позволяет ввести (innerHTML) значение пути var (это адрес первой вкладки). И теперь проблема: button1 использует функцию kuku.open (), а button2 использует kuku.save (), но var в первой функции не существует в kuku.save ()

var kuku = {

open: function () {
//put current URI addres into var
var path=content.location.href;

//Create nslFile object
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath(path);

//Put file content into data variable
var data = "";
var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].
                        createInstance(Components.interfaces.nsIFileInputStream);
var cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"].
                        createInstance(Components.interfaces.nsIConverterInputStream);
fstream.init(file, -1, 0, 0);
cstream.init(fstream, "UTF-8", 0, 0); // you can use another encoding here if you wish

let (str = {}) {
  cstream.readString(-1, str); // read the whole file and put it in str.value
  data = str.value;
}
cstream.close(); // this closes fstream

//Open editor in new Tab and select it

var tab=gBrowser.addTab("http://www.google.pl");
var newTabBrowser = gBrowser.getBrowserForTab(tab);
gBrowser.selectedTab=tab;

},


save: function () {
//Write in body address from var
content.body.innerHTML=path;
}
}

Я думаю, проблема в том, что путь - это локальная переменная, но я не могу использовать глобальную переменную. Это будет работать, только для одной вкладки на браузер. Я имею в виду, что когда пользователь нажимает кнопку 1 на странице A и кнопку 1 на странице B, тогда эти две новые открытые страницы будут иметь путь var с одинаковым значением. При нажатии кнопки на другом сайте значение пути будет перезаписано. Надеюсь, у меня не закружилась голова;)

У кого-нибудь есть идея?

1 Ответ

1 голос
/ 20 августа 2009

Поместите переменную в объект, а не в функцию. Если переменная находится в функции, то только функция имеет к ней доступ:

var kuku = {};
kuku.path = "";

kuku.open = function () {
  kuku.path = content.location.href;
  //The rest of the code here
};


kuku.save = function () {
  content.body.innerHTML=kuku.path;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...