>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Вопрос по работе с preferences http://forum.mozilla-russia.org/viewtopic.php?id=52640 |
Galen > 01-12-2011 22:35:30 |
Доброго времени суток. Пишу небольшое расширение, вроде всё более-менее ясно и даже работает. Но. Вот часть JS-кода: Выделить код Код:var gTimer = { preferences: null, autorun: null, timer: null, min: 0, hour: 0, interval: 1, nullLabel: true, init: function() { this.hour = 0; this.min = 0; this.preferences = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService) .getBranch("extensions.gtimer."); this.preferences.QueryInterface(Components.interfaces.nsIPrefBranch2); this.preferences.addObserver("", gTimer, false); // почему здесь gTimer ? gTimer.interval = this.preferences.getIntPref("interval"); this.autorun = this.preferences.getBoolPref("autorun"); if(this.autorun) setTimeout("gTimer.start()", 100); }, observe: function(subject, topic, data) { if(topic != "nsPref:changed") return; switch(data) { case "interval": { this.interval = subject.getIntPref("interval"); break; } case "autorun": { this.autorun = subject.getBoolPref("autorun"); break; } } }, // дальше остальной код Собственно вопрос в единственном комментарии, а относится он к строчке под этим самым комментарием. Почему в этой строке нужно писать именно так, а не через this, как во всём остальном скрипте. Причём, если написать через this, то значение свойства правильно сохраняется в переменной interval (проверял через alert), но при обращение позже к этой переменной в другой функции её значение равно 1 (т.е. заданному по умолчанию). |
tenshi > 21-01-2012 18:25:49 |
ну покажи эту другую функцию |