2011-05-19 304 views
0

我想知道用户何时要关闭firefox应用程序(alt + F4或关闭按钮)。我已经尝试onbeforeunload,它的工作原理,但只有当用户按下文件>>退出。我写了一个观察者,并使用quit-application事件知道用户什么时候退出但没有事件被触发! :/关闭firefox应用程序(alt + F4或关闭按钮)

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"); 
     } 
    } 

回答

0

我想这是因为在你的case语句错误的:哪里是 “OBS” 定义

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

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