关闭firefox应用程序(alt + F4或关闭按钮)

时间:2011-05-19 16:24:14

标签: javascript-events firefox-addon observer-pattern quit

我想知道用户何时关闭firefox应用程序(alt + F4或关闭按钮)。我尝试过onbeforeunload,但只有当用户按下文件>>退出时才有效。我编写了一个观察者,并使用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=data&and=more&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 个答案:

答案 0 :(得分:0)

我认为这是因为您的案例陈述中的错误:

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

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

“obs”定义在哪里?