在 Firefox-Addon ActionButton 上覆盖 `onClick`

Overriding `onClick` on a Firefox-Addon ActionButton

在 Firefox 附加组件中创建 a plain old ActionButton 时,似乎无法在创建后覆盖 onClick 属性。总之,这

var handleClick = function() {
  tabs.open('https://www.mozilla.org/');
};

var button = new ActionButton({
  id: 'my-link',
  label: 'label me',
  icon: {
    '16': './icon-16.png',
    '32': './icon-32.png',
    '64': './icon-64.png'
  },
  onClick: handleClick
});

button.onClick = function() {
  tabs.open('https://www.github.com/');
};

使用 mozilla.org 打开一个选项卡,而不是 github.com

创建按钮后如何适配onClick

API Docs suggest using on 这是添加事件侦听器的常用模式。

button.on('click', handleClick);

尽管这将添加 另一个 点击处理程序,而不是 替换 原始处理程序。保留对处理程序的引用(例如 handleClick)并使用 button.removeListener(handleClick) 删除旧的。

最简单的事情可能不是替换处理程序而是替换它的数据:

var url = 'https://www.mozilla.org/';
var handleClick = function() {
  tabs.open(url);
};

// ...

url = 'https://www.github.com/';