我正在编写一个应该添加新书签的Firefox附加组件。我正在考虑采用Mozilla Firefox浏览器中已有的一些功能。据我所知,Firefox浏览器是用XUL编写的,代码是开源的。我怎样才能找到执行任何特定操作的代码,比如在这种情况下,当我单击上下文菜单项“为此链接添加书签”窗口出现“新书签”时,如何查找打开此窗口的代码?如何找到打开“添加书签”窗口的Firefox代码?
谢谢!
我正在编写一个应该添加新书签的Firefox附加组件。我正在考虑采用Mozilla Firefox浏览器中已有的一些功能。据我所知,Firefox浏览器是用XUL编写的,代码是开源的。我怎样才能找到执行任何特定操作的代码,比如在这种情况下,当我单击上下文菜单项“为此链接添加书签”窗口出现“新书签”时,如何查找打开此窗口的代码?如何找到打开“添加书签”窗口的Firefox代码?
谢谢!
请参阅Viewing and searching Mozilla source code online - 目前有两种用于搜索Mozilla代码的在线工具:DXR和MXR。前者更新更先进,后者更简单,更成熟。使用任何这些:
查找本地化文件(通常.dtd
或.properties
),其内部名称映射到人类可读的标签,在这种情况下:browser/locales/en-US/chrome/browser/browser.dtd:
ENTITY bookmarkThisLinkCmd.label "Bookmark This Link">
搜索内部名称您发现:bookmarkThisLinkCmd.label
找到在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();"/>
找到gContextMenu
定义: regexp:gContextMenu[^A-Za-z.] - 有一堆命中,他们都在做
gContextMenu = new nsContextMenu(this, event.shiftKey);
最后找到的.bookmarkLink
定义:browser/base/content/nsContextMenu.js#1690
非常感谢,Nickolay!这是一个了不起的答案。这需要我很长时间才能自行解决。 – GreenBear