如何检测历史记录或书签条目的点击?

时间:2012-05-25 12:19:19

标签: javascript firefox javascript-events firefox-addon bookmarks

在我的Firefox扩展程序中,我想检测页面加载的来源 - 例如,点击后:链接,历史记录条目或书签。到目前为止,我已经设法检测到链接上的点击并使用后退/前进历史记录按钮。

但是,我无法检测历史记录菜单项目的点击次数,更不用说点击历史记录库窗口中的项目(单击“显示所有历史记录”时弹出)。书签菜单和书签库窗口也存在同样的问题。

有没有或多或少直接的方法来实现这一目标?对于书签菜单,我可以考虑为所有书签添加一个点击监听器。

1 个答案:

答案 0 :(得分:1)

所有点击历史记录和书签项目(在主浏览器窗口和单独的窗口/侧边栏中)都会调用PlacesUIUtils.openNodeWithEvent()PlacesUIUtils.openNodeIn()(后者在用户明确选择打开项目的位置时使用从上下文菜单)。您可以使用以下方法扩展这些功能:

Components.utils.import("resource:///modules/PlacesUIUtils.jsm");
if (!("myExtensionHooked" in PlacesUIUtils.openNodeWithEvent))
{
  var origOpenNodeWithEvent = PlacesUIUtils.openNodeWithEvent;
  PlacesUIUtils.openNodeWithEvent = function(node)
  {
    // Remember node.uri here - user chose this URL
    ...

    // Call original function
    return origOpenNodeWithEvent.apply(this, arguments);
  };
  PlacesUIUtils.openNodeWithEvent.myExtensionHooked = true;
}

类似于其他功能。请注意,每个浏览会话只应执行一次 - 所有浏览器窗口共享PlacesUIUtils对象。这就是示例代码中myExtensionHooked属性的目的(您应该将其更改为扩展所特有的内容)。

相关问题