火狐插件。我正在将一个现有的插件移植到一个无需重启的插件上。我有一个面板,里面有很多 UI 元素(主要是框/描述和图像),在 XUL 覆盖文件中定义面板元素对我来说非常方便。如果我不这样做,我会有很多臃肿的 js 代码。
面板元素(父元素)本身是在代码中动态创建的,然后我使用loadOverlay
, 等待“合并”事件,然后从覆盖的文档中附加面板元素的子元素。我还确保在删除时清理元素。
但是,使用叠加层很可能无法通过 AMO 审查。我认为的一些原因是:
- 在大多数情况下,覆盖元素会在删除时引起问题(例如:工具栏按钮记住它们的位置等)
- 在覆盖文件中附加 js/css 文件存在问题。
- loadOverlay 有问题(496320、330458)
这是我的推论:
- loadOverlay() API 本身并没有被弃用——事实上它“没有被冻结,以后可能会改变”——这意味着它将来可能会可用。
- 第二次覆盖加载失败的错误不适用于我的情况,因为我不会在没有覆盖合并的情况下进行初始化。
- 到目前为止,对偏好窗口等使用静态覆盖是完全可以接受的。
- 在我的情况下,面板的行为很像首选项窗口(按需显示并在删除插件时清理)
- 我没有附加到覆盖层的任何 js/css,也没有任何元素的事件侦听器。覆盖仅用于定义框和描述文本 - 仅此而已。
因此,考虑到这些,是否可以将叠加层和 loadOverlay() 用于无重启插件?如果没有,是否有替代方案?