在Firefox扩展中覆盖/嵌入addon SDK以修改panel.js

时间:2014-06-25 14:18:00

标签: javascript firefox firefox-addon firefox-addon-sdk

我使用Addon SDK来显示Panel。它工作正常,但我想将noautohide属性设置为true,因此当用户在面板外点击时,面板不会自动关闭。

我设法使用"chrome" authority访问了面板对象,但我担心红色标记为“实验性”; - )

所以我想编辑panel/utils以公开noautohide属性。是否可以在扩展程序包中“覆盖”或“嵌入”我编辑的文件?

2 个答案:

答案 0 :(得分:0)

不幸的是,没有支持的方法(我知道)。在没有任何结果的情况下搜索noautohide的SDK来源似乎证实了这一点。

就个人而言,我现在使用require("chrome") - 并且获取XUL元素的解决方法(但请记住,可能存在多个浏览器窗口),或者只是不实现它一点都不。

我会建议不要修补 SDK和/或“嵌入”修补的面板库。

前者需要使用捆绑的SDK而不是内置的SDK,并且看到每个Firefox版本中的所有更改,您可能不得不重新打包XPI与每个主要的Firefox更新。此外,您不能在AMO上托管附加已修补SDK的加载项。

后面的“嵌入”只是面板lib的选项具有相同的维护问题。此外,从SDK中提取/克隆只是面板库并不是一件容易的事情......至少你必须克隆sdk/panel.js和{{1}或许更多。

如果你filed a feature request可能会有所帮助。

答案 1 :(得分:0)

而不是修补它,你可以做的是addEventListener popuphidingevent.stopPropagation();以及event.preventDefault();。然后只需添加一个关闭按钮,在单击时删除该侦听器,然后隐藏该面板。我无法通过noauthohide任何其他方式来解决问题:

Avoid panel to autoHide in Firefox extension