我想将一些DOM元素添加到另一个扩展的XUL文件中。
该扩展允许通过单击它添加到Firefox的工具栏按钮来“打开”。单击此按钮将打开一个新选项卡,其中包含作为扩展名一部分的XUL文件的chrome地址。
我已经动态创建了一些DOM元素,并将它们添加到Firefox窗口中的元素(例如前面提到的工具栏),通过在加载我的加载项时添加它们并使用窗口“加载”事件监听器打开后的窗口我的加载项已加载(使用document.createElement()
和element.appendChild()
),但我不确定向此XUL文件添加动态元素的最佳方法,可以在同一窗口中多次打开和关闭
有没有办法在每个会话中叠加一次XUL文件(我猜不是)?否则,我是否需要设置某种页面加载侦听器,每次页面加载时都会触发,然后检查地址以查看它是否与XUL文件的地址匹配,如果是,则执行叠加?是否可以收听特定地址?
答案 0 :(得分:1)
我最终向load
添加了gBrowser
侦听器以侦听页面加载。侦听器检查event.originalTarget.location
以获取chrome XUL文件地址,并在匹配时添加DOM元素。启用我的加载项后,我使用gBrowser.browsers.length
和gBrowser.getBrowserAtIndex()
遍历窗口中所有打开的选项卡,以检查XUL是否已打开。
为了清理,我将添加到XUL文件中的每个DOM元素的引用存储在我添加到选项卡内容文档的addedByMyAddon
数组属性中。当我的加载项被禁用时,我再次遍历打开的选项卡查找XUL文件,然后删除addedByMyAddon
属性中的所有内容,然后删除addedByMyAddon
属性。