2016-04-08 19 views
1

Ich schreibe ein Firefox-Add-on, das neue Lesezeichen hinzufügen soll. Ich denke daran, einige der Funktionen, die bereits im Mozilla Firefox-Browser vorhanden sind, zu verwenden. Soweit ich weiß, ist der Firefox-Browser in XUL geschrieben und der Code ist Open Source. Wie kann ich den Code finden, der eine bestimmte Aktion ausführt, wie in diesem Fall, wenn ich auf den Kontextmenüpunkt "Diesen Link bookmarken" klicke, erscheint ein Fenster "Neues Lesezeichen", wie finde ich den Code, der dieses Fenster öffnet?Wie kann ich den Firefox-Code finden, der das Fenster "Add new Bookmark" öffnet?

Vielen Dank!

Antwort

2

Siehe Viewing and searching Mozilla source code online - derzeit gibt es zwei Online-Tools zum Durchsuchen des Mozilla-Codes: DXR und MXR. Ersteres ist neuer und fortgeschrittener, letzterer ist einfacher und reifer. eine dieser Anwendung:

  1. Suche nach dem Etikett Sie suchen: "Bookmark this link"
  2. eine Lokalisierungsdatei finden (in der Regel .dtd oder .properties), die Karten einen internen Namen der Menschen lesbaren Etikett, in dieser Fall: browser/locales/en-US/chrome/browser/browser.dtd:

    ENTITY bookmarkThisLinkCmd.label  "Bookmark This Link"> 
    
  3. Suche nach dem internen Namen Sie gefunden: bookmarkThisLinkCmd.label

  4. Suchen Sie den Code, der ihn in der Benutzeroberfläche anzeigt, normalerweise .xul oder .js*, in diesem Fall browser/base/content/browser-context.inc - eine Datei, die über Präprozessor in einer Reihe von XUL-Dateien enthalten ist. (Beachten Sie, dass DXR zeigt Ihnen auch eine Reihe von Ergebnissen unter obj-x86_64-pc-linux-gnu - diese Ergebnisse sind während des Build erzeugt wird, und nicht der ursprüngliche Quellcode und in der Regel ignoriert werden sollte.)

    <menuitem id="context-bookmarklink" 
         label="&bookmarkThisLinkCmd.label;" 
         accesskey="&bookmarkThisLinkCmd.accesskey;" 
         oncommand="gContextMenu.bookmarkLink();"/> 
    
  5. Finden Sie die Definition von gContextMenu: regexp:gContextMenu[^A-Za-z.] - es gibt eine Reihe von Hits, alle von ihnen

    tun
    gContextMenu = new nsContextMenu(this, event.shiftKey); 
    
  6. schließlich die Definition von .bookmarkLink finden: browser/base/content/nsContextMenu.js#1690

+0

Vielen Dank, Nickolay! Das ist eine erstaunliche Antwort. Ich würde ewig brauchen, um es selbst herauszufinden. – GreenBear