使用nsINavHistoryObserver为firefox扩展创建事件

时间:2010-03-29 19:42:17

标签: javascript firefox-addon

我正在尝试创建一个firefox扩展,它会查看用户查看并查看URL的所有新页面。我正在查看nsINavHistoryObserver接口,并对onVisit函数感兴趣。有没有办法创建一个可以在调用onVisit函数时监听的事件监听器?

谢谢

1 个答案:

答案 0 :(得分:2)

您可以在Mozilla开发人员中心找到有关地方信息(书签和历史记录系统)的一些信息:https://developer.mozilla.org/en/Places

您可以在我们的测试单元中找到示例(请注意其中一些示例无法针对性能进行优化) h t t p://mxr.mozilla.org/mozilla-central/search?string = nsINavHistoryobserver& find = tests

您需要的是获取历史记录服务,并将历史观察者附加到其中

Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");

var hs = Cc["@mozilla.org/browser/nav-history-service;1"].
         getService(Ci.nsINavHistoryService);

var historyObserver = {
  onBeginUpdateBatch: function() {},
  onEndUpdateBatch: function() {},
  onVisit: function(aURI, aVisitID, aTime, aSessionID, aReferringID, aTransitionType) {},
  onTitleChanged: function(aURI, aPageTitle) {},
  onBeforeDeleteURI: function(aURI) {},
  onDeleteURI: function(aURI) {},
  onClearHistory: function() {},
  onPageChanged: function(aURI, aWhat, aValue) {},
  onDeleteVisits: function() {},
  QueryInterface: XPCOMUtils.generateQI([Ci.nsINavHistoryObserver])
};

hs.addObserver(historyObserver, false);

您应该尝试尽可能减少在addVisit通知中所做的工作,您应该异步处理它以避免降低基本浏览器功能。