2016-04-08 75 views
1

我正在编写一个应该添加新书签的Firefox附加组件。我正在考虑采用Mozilla Firefox浏览器中已有的一些功能。据我所知,Firefox浏览器是用XUL编写的,代码是开源的。我怎样才能找到执行任何特定操作的代码,比如在这种情况下,当我单击上下文菜单项“为此链接添加书签”窗口出现“新书签”时,如何查找打开此窗口的代码?如何找到打开“添加书签”窗口的Firefox代码?

谢谢!

回答

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

+0

非常感谢,Nickolay!这是一个了不起的答案。这需要我很长时间才能自行解决。 – GreenBear

相关问题