我正在编写一个应该添加新书签的Firefox附加组件。我正在考虑使用Mozilla Firefox浏览器中已有的一些功能。据我所知,Firefox浏览器是用XUL编写的,代码是开源的。如何找到执行任何特定操作的代码,例如在我单击上下文菜单项时#34;将此链接添加为书签"出现一个窗口" New Bookmark",如何找到打开此窗口的代码?
谢谢!
答案 0 :(得分:2)
请参阅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