2016-04-08 74 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

相關問題