我使用Addon SDK来显示Panel。它工作正常,但我想将noautohide
属性设置为true
,因此当用户在面板外点击时,面板不会自动关闭。
我设法使用"chrome" authority访问了面板对象,但我担心红色标记为“实验性”; - )
所以我想编辑panel/utils
以公开noautohide
属性。是否可以在扩展程序包中“覆盖”或“嵌入”我编辑的文件?
答案 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
popuphiding
和event.stopPropagation();
以及event.preventDefault();
。然后只需添加一个关闭按钮,在单击时删除该侦听器,然后隐藏该面板。我无法通过noauthohide
任何其他方式来解决问题: