Firefox toolbarbutton初始化事件

时间:2013-08-13 15:21:55

标签: javascript firefox firefox-addon xul

监听toolbarbutton初始化的正确方法是什么(假设我想根据插件的当前状态更改图标)?

现在我只是在听window.load,并通过document.getElementById检测工具栏按钮是否存在。

对于用户工具栏自定义我正在使用aftercustomization事件,以防删除工具栏按钮,然后由用户重新添加。

但是有更直接的方法吗?

1 个答案:

答案 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规则以选择适当的图标或其他。这个解决方案会更清晰,但需要一些时间来弄明白。