Закройте приложение Firefox (alt F4 или кнопка закрыть)

#javascript #firefox-addon #exit #observer-pattern #dom-events

#javascript #firefox-дополнение #выход #наблюдатель-шаблон #dom-события

Вопрос:

Я хотел бы знать, когда пользователь собирается закрыть приложение Firefox (alt F4 или кнопка закрыть). Я пробовал onbeforeunload , это работает, но только когда пользователь нажимает File>> exit. Я написал observer и использовал событие quit-application, чтобы узнать, когда пользователь завершает работу, но событие не запускается!

 var ObserverTest = {

        register: function() {
            var observerService = Components.classes["@mozilla.org/observer-service;1"]
                .getService(Components.interfaces.nsIObserverService);
          //  observerService.addObserver(ObserverTest, "user-interaction-active", false);
            observerService.addObserver(ObserverTest, "quit-application",false);
        },

        observe: function(subject, topic, data) {


            switch (topic) {
                case 'sessionstore-windows-restored':
                    // do stuff
                    break;
                case 'user-interaction-inactive':
                    // do stuff
                      var url = "http://localhost:13000";
                     var params = "q=hello";
                    var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
                    req.open('POST', url, true);
                    req.send('your=dataamp;and=moreamp;stuff=here');
                    break;
                case 'user-interaction-active':
                    // every 5 seconds and immediately when user becomes active


                    break;
                case 'quit-application':
                 obs.removeObserver(this, "quit-application");

                  alert('hello');
                  break;
                  case 'quit-application-requested':
                  alert("hello");
                  break;

            }
        },

        unregister: function() {
            var observerService = Components.classes["@mozilla.org/observer-service;1"]
                .getService(Components.interfaces.nsIObserverService);
         //   observerService.removeObserver(ObserverTest, "user-interaction-active");
            observerService.removeObserver(ObserverText,"quit-application");
        }
    }
  

Ответ №1:

Я предполагаю, что это из-за ошибки в вашем операторе case:

 регистр 'завершение работы приложения':
 obs.removeObserver (это, "выйти из приложения");

 оповещение ('привет');
 перерыв;
 случай "запрошено завершение работы приложения": 
 оповещение ("привет");
 перерыв;

Где определяется «obs»?