2

我想将一些 DOM 元素添加到另一个扩展的 XUL 文件中。

该扩展允许通过单击它添加到 Firefox 的工具栏按钮来“打开”它自己。单击此按钮会打开一个新选项卡,其中包含作为扩展程序一部分的 XUL 文件的 chrome 地址。

我已经动态创建了一些 DOM 元素并将它们添加到 Firefox 窗口(例如前面提到的工具栏)上的元素中,方法是在加载我的加载项时添加它们并在我添加后打开的窗口使用窗口“加载”事件侦听器- on 已加载(使用document.createElement()and element.appendChild()),但我不确定将动态元素添加到此 XUL 文件的最佳方法,该文件可以在同一窗口中多次打开和关闭。

有没有办法在每个会话中覆盖 XUL 文件一次(我猜不是)?否则,我是否需要设置某种页面加载侦听器,该侦听器在每次页面加载时触发,然后检查地址以查看它是否与 XUL 文件的地址匹配,如果匹配则覆盖?是否可以监听特定地址?

4

1 回答 1

1

我最终添加了一个load监听器gBrowser来监听页面加载。侦听器检查event.originalTarget.locationchrome XUL 文件地址并在匹配项上添加 DOM 元素。当我的附加组件被启用时,我使用gBrowser.browsers.lengthandgBrowser.getBrowserAtIndex()循环浏览窗口中所有打开的选项卡,以检查 XUL 是否已经打开。

为了进行清理,我将添加到 XUL 文件中的每个 DOM 元素的引用存储在addedByMyAddon我添加到选项卡内容文档的数组属性中。当我的附加组件被禁用时,我再次循环打开的选项卡以查找 XUL 文件,然后删除属性中的所有内容,addedByMyAddon然后删除该addedByMyAddon属性。

于 2013-08-01T19:15:39.980 回答