监听toolbarbutton初始化的正确方法是什么(假设我想根据插件的当前状态更改图标)?
现在我只是在听window.load
,并通过document.getElementById
检测工具栏按钮是否存在。
对于用户工具栏自定义我正在使用aftercustomization
事件,以防删除工具栏按钮,然后由用户重新添加。
但是有更直接的方法吗?
答案 0 :(得分:0)
有几种方法可以“修改”工具栏按钮,即使它隐藏在调色板中(用户尚未添加或删除它)。这是一个选择:
无论如何,您可以通过手动搜索调色板来获取对DOM节点的引用,如果document.getElementById
没有产生结果。无论如何,这适用于browser.xul。一些代码(简单来自我正在使用的代码,但经过一些清理后未经测试)。它使用<toolbox>.palette
function findToolbarButtonAnyway(id) {
let tb = document.getElementById(id);
if (tb) {
return tb;
}
let palette = $("navigator-toolbox").palette;
for (let c = palette.firstChild; c; c = c.nextSibling) {
if (c.id == id) {
return c;
}
}
return null; // not found
}
您可以改为使用<broadcaster>
(or <command>
)来“广播”一组属性以保护广播公司所需的所有其他节点。你可以,例如设置属性并具有相应的CSS规则以选择适当的图标或其他。这个解决方案会更清晰,但需要一些时间来弄明白。