我想知道用户何时关闭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");
}
}
答案 0 :(得分:0)
我认为这是因为您的案例陈述中的错误:
case 'quit-application': obs.removeObserver(this, "quit-application"); alert('hello'); break; case 'quit-application-requested': alert("hello"); break;
“obs”定义在哪里?