4

火狐插件。我正在将一个现有的插件移植到一个无需重启的插件上。我有一个面板,里面有很多 UI 元素(主要是框/描述和图像),在 XUL 覆盖文件中定义面板元素对我来说非常方便。如果我不这样做,我会有很多臃肿的 js 代码。

面板元素(父元素)本身是在代码中动态创建的,然后我使用loadOverlay, 等待“合并”事件,然后从覆盖的文档中附加面板元素的子元素。我还确保在删除时清理元素。

但是,使用叠加层很可能无法通过 AMO 审查。我认为的一些原因是:

  • 在大多数情况下,覆盖元素会在删除时引起问题(例如:工具栏按钮记住它们的位置等)
  • 在覆盖文件中附加 js/css 文件存在问题。
  • loadOverlay 有问题496320、330458

这是我的推论:

  • loadOverlay() API 本身并没有被弃用——事实上它“没有被冻结,以后可能会改变”——这意味着它将来可能会可用。
  • 第二次覆盖加载失败的错误不适用于我的情况,因为我不会在没有覆盖合并的情况下进行初始化。
  • 到目前为止,对偏好窗口等使用静态覆盖是完全可以接受的。
  • 在我的情况下,面板的行为很像首选项窗口(按需显示并在删除插件时清理)
  • 我没有附加到覆盖层的任何 js/css,也没有任何元素的事件侦听器。覆盖仅用于定义框和描述文本 - 仅此而已。

因此,考虑到这些,是否可以将叠加层和 loadOverlay() 用于无重启插件?如果没有,是否有替代方案?

4

1 回答 1

0

关于覆盖,通过检查扩展现有插件(如ehh)的无重启插件的源代码,我看到 overlay.xul 自动与现有插件合并。所以使用覆盖应该不是问题。

于 2014-04-01T20:39:35.287 回答