기록을 지우려면 Firefox-Browser-Events (sessionstore-windows-restored
, user-interaction-inactive
, ..)를 기다리고 싶습니다. 내 확장 기능은 현재 바로 가기의 기록을 지울 수 있지만 그러한 이벤트를 수신하는 방법을 모르겠습니다. 나는 이미 observer notification에 대한 열정을 가졌지 만 나는 아무 것도 시도하지 않았다.Firefox 확장에서 지정된 Firefox 이벤트를 어떻게 볼 수 있습니까?
내 연장 코드는 지금까지 여기에 있습니다 :
(function() {
(window.myObj =
{
myObserver : function()
{
this.register();
},
init : function()
{
try {
myObserver.prototype = {
observe: function(subject, topic, data){
switch (topic) {
case 'sessionstore-windows-restored':
Firebug.Console.log('sessionstore-windows-restored observed');
myObj.clearHistory();
break;
case 'user-interaction-inactive':
Firebug.Console.log('user-interaction-inactive');
break;
case 'user-interaction-active':
Firebug.Console.log('user-interaction-active');
break;
}
Firebug.Console.log('HUI :' + subject + ','+topic+','+data);
},
register: function(){
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(this, "readyToClearHistory", false);
},
unregister: function(){
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.removeObserver(this, "readyToClearHistory");
}
}
}
catch (e) {
Firebug.Console.log('MIST :' + e);
}
observer = new myObserver();
},
clearHistory : function(){
var globalHistory = Components.classes["@mozilla.org/browser/global-history;2"].getService(Components.interfaces.nsIBrowserHistory);
var now = Date.now();
// clear one hour
globalHistory.removeVisitsByTimeframe(now - 3600, now);
try {
var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
os.notifyObservers(null, "browser:purge-session-history", "");
}
catch (e) {
// Clear last URL of the Open Web Location dialog
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch2);
try {
prefs.clearUserPref("general.open_location.last_url");
}
catch (e) {
}
}
}
}
}
일부 예제 코드가 좋은 것입니다. 이 문제를 해결하려면 무엇이 필요합니까?
+1 감사합니다. – Thariama
'this'가 'ObserverTest' 객체를 가리키고 있지 않기 때문에'unregister' 메소드가 올바르게 작동하지 않습니다. 그렇지 않으면 자리에 앉으십시오. – sdwilsh
@sdwilsh - 수정 됨. 감사. –