使用Add-on SDK添加工具栏按钮?将XUL与Add-on SDK集成用于Firefox插件?

10
我已使用Add-on SDK API完成了大部分Firefox附加组件的编码。现在我发现Add-on SDK可能不足以满足我的需求。我需要两个东西:
  1. 位于地址栏旁边工具栏中的下拉按钮。
  2. 修改Firefox中的附加组件管理器。
真是令人失望,但我不相信 Add-on SDK 可以实现它们中的任何一个。 首先,我知道Add-on SDK API中有一个 “widget” 模块。但是这只允许我将简单的图标或标签添加到笨拙的附加栏。如果我需要像Firebug或Greasemonkey旁边那样漂亮的按钮怎么办?至于修改firefox中的附加组件管理器,我尝试过 Nickolay Ponomarev's XUL with the Add-on SDK 但完全没有成功。如果有人知道如何让这个工作并可以指点我方向,那将非常有帮助。(当我尝试时,“cfx init --template xul”没有做任何常规SDK可以做的事情)

2
插件应该将它们的图标添加到插件栏,这是所有从Firefox 4开始的扩展的官方建议。如果用户想要混乱他的其他工具栏,他可以自定义它们并拖动图标 - 这对SDK插件也应该起作用。 - Wladimir Palant
关于修改附加组件管理器:您没有提供任何有关您想要实现什么的信息,并且同时提出两个问题也不是一个好主意。我建议您编辑您的问题,只询问有关工具栏按钮的问题,并将附加组件管理器的修改移动到另一个问题中。 - Wladimir Palant
@WladimirPalant 感谢您的建议。我认为许多 Firefox 用户仍然不习惯移动图标。我担心人们不会喜欢我的插件菜单在插件栏上的默认位置,而会选择关闭整个栏目,而不是费力地重新定位。 - Salami
值得注意的是,SDK项目认识到当前的情况很尴尬;我们已经考虑了如何在未来改进这一点,特别是围绕位置栏UI。我看到的一些关于Firefox UX的新兴想法包含了额外的UI便利性,以供插件使用。 - therealjeffg
3个回答

3

2
我还没有看到这个,但它看起来非常有用。也许我可以将其作为更改附加组件管理器的模型。谢谢! - Salami
1
你可以使用SDK模块来修改EM,我本来也想这么做的,所以如果你已经开始了什么,请告诉我! - erikvold
1
(提供的链接已失效) - Mike

2
上面提到的toolbarbuttonlib-jplib已不再存在,但可以尝试使用toolbarwidget-jplib。它非常好用!绝对是救命稻草。

1
尝试使用Jetpack和Nickolay Ponomarev的XUL,但没有任何成功的经验。如果有人知道如何使其工作并能指导我正确的方向,那将非常有帮助(当我尝试时,“cfx init --template xul”不会像常规sdk一样做任何事情)。
我非常想听听您尝试了什么以及它是如何失败的的详细描述。在当前形式下,我无法回答这个问题。
你的意思是只使用内置的高级SDK模块。可以编写一个低级SDK模块,使用XPCOM并直接与chrome代码交互来实现所需的功能 - 毕竟这就是其余SDK模块的实现方式。如果您选择这条路,您将失去SDK的未来兼容性承诺 - 您必须将其包含在上游SDK中或自己更新以适用于更新的Firefox版本。

感谢您的回复。我从您在github上的add-on sdk分支下载了1.0b1rc4,并运行了source bin/activate。然后,在一个新文件夹中运行cfx init --template xul时,我没有得到提到的extension文件夹(与lib、tests等并列)。我甚至没有得到“基于XUL的插件中预生成的文件”部分中提到的任何文件,也没有更改package.json文件的说明。指示似乎很清楚,但我没有得到预期的结果。 - Salami
1
@Salami:好的,我怀疑是下载步骤出了问题。你是否使用 Github 页面上的“ZIP”按钮进行下载?你可能已经下载了代码的“基础”版本,而不是分支版本。尝试使用 https://github.com/nickolay/addon-sdk/zipball/bug641215-xul-extensions-v2 进行下载(或者最好使用 Git 进行克隆)。 - Nickolay
谢谢。你提供的这个0.9版本似乎运行良好。 - Salami
@Nickolay:-t xul--template xul标志已被--templatedir=xul取代了吗? - vo1stv
@SmileAndNod:不,"--template xul" 是我(过时的)分支中 cfx init 的一个参数;"templatedir" 可以在基线插件 SDK 中与 cfx run/xpi 一起使用(https://addons.mozilla.org/en-US/developers/docs/sdk/1.0/dev-guide/addon-development/cfx-tool.html),而我的分支在生成 xul 扩展时会向 package.json 添加 templatedir 属性。 - Nickolay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接