1

什么是收听工具栏按钮初始化的正确方法(比如我想根据插件的当前更改图标)?

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

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

但是有没有更直接的方法呢?

4

1 回答 1

1

有几种方法可以“修改”工具栏按钮,即使它隐藏在调色板中(用户尚未添加或删除它)。这是一个选择:

document.getElementById无论如何,如果没有产生结果,您可以通过手动搜索调色板来获得对 DOM 节点的引用。无论如何,这适用于 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>(或<command> “广播”一组属性,所有其他节点观察广播者将采用。例如,您可以设置属性并使用相应的 CSS 规则来选择适当的图标或其他内容。这个解决方案会更干净,但需要一些时间来弄清楚。

于 2013-08-13T15:43:50.953 回答