A teraz problem: przycisk 1 korzysta z funkcji kuku.open() a przycisk 2 z kuku.save(), jednak zmienna zapisana w pierwszej funkcji nie jest dostępna w drugiej.
- Kod: Zaznacz cały
var kuku = {
open: function () {
//Przypisuje do zmiennej path adres aktualnej strony
var path=content.location.href;
//Tworze nslFile object
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(path);
//Przypisuje zawartość pliku do zmiennej typu string
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
//Otwieram nową kartę i ustawiam ją na aktywną
var tab=gBrowser.addTab("http://www.google.pl");
var newTabBrowser = gBrowser.getBrowserForTab(tab);
gBrowser.selectedTab=tab;
},
save: function () {
//Zastępuje body nowo-otwartej strony adresem poprzedniej
content.body.innerHTML=path;
}
}
Zawartość pliku xul, gdzie znajdują się definicje położenia przycisków i przypisane funkcje, pominę, bo raczej z tego co tam pisze, to jedyną ważną informacją jest to, że przycisk nr1 korzysta z funkcji kuku.open() a nr2 z kuku.save()
Domyślam się, że problemem jest, że zmienna path jest w każdej z tych metod zmienną lokalną, ale gdy użyje zmiennej globalnej, zdaje mi się, że w przypadku, gdy użytkownik kliknie na jednej stronie na przycisk nr1 i na drugiej stronie w przycisk nr1, no wtedy dwie nowootwarte strony będą posiadały zmienną path o takiej samej wartości, gdyż funkcja wywołana przy kliknięciu przycisku nr1 z drugiej strony, zastąpi adres pierwszej strony w zmiennej path. Mam nadzieje, że zbytnio nie zamieszałem
Ma ktoś jakiś pomysł?