如何找到打开的Firefox代码"添加新书签"窗口?

时间:2016-04-08 19:30:39

标签: firefox firefox-addon xul

我正在编写一个应该添加新书签的Firefox附加组件。我正在考虑使用Mozilla Firefox浏览器中已有的一些功能。据我所知,Firefox浏览器是用XUL编写的,代码是开源的。如何找到执行任何特定操作的代码,例如在我单击上下文菜单项时#34;将此链接添加为书签"出现一个窗口" New Bookmark",如何找到打开此窗口的代码?

谢谢!

1 个答案:

答案 0 :(得分:2)

请参阅Viewing and searching Mozilla source code online - 目前有两种在线工具可用于搜索Mozilla的代码:DXR和MXR。前者更新,更先进,后者更简单,更成熟。使用以下任何一个:

  1. 搜索您要查找的标签:"Bookmark this link"
  2. 查找本地化文件(通常为.dtd.properties),将内部名称映射到人类可读标签,在本例中为browser/locales/en-US/chrome/browser/browser.dtd

    ENTITY bookmarkThisLinkCmd.label      "Bookmark This Link">
    
  3. 搜索您找到的内部名称:bookmarkThisLinkCmd.label

  4. 查找在UI中显示的代码,通常为.xul.js*,在本例中为browser/base/content/browser-context.inc - 通过预处理程序包含在多个XUL文件中的文件。 (请注意,DXR还会在obj-x86_64-pc-linux-gnu下显示一堆结果 - 这些是在构建期间生成的结果,而不是原始源代码,通常应该被忽略。)

      <menuitem id="context-bookmarklink"
            label="&bookmarkThisLinkCmd.label;"
            accesskey="&bookmarkThisLinkCmd.accesskey;"
            oncommand="gContextMenu.bookmarkLink();"/>
    
  5. 找到gContextMenu的定义:regexp:gContextMenu[^A-Za-z.] - 有一堆点击,所有这些都在做

     gContextMenu = new nsContextMenu(this, event.shiftKey); 
    
  6. 最后找到.bookmarkLink的定义:browser/base/content/nsContextMenu.js#1690