覆盖Firefox-Addon ActionButton上的`onClick`

时间:2015-05-10 16:32:00

标签: javascript firefox-addon firefox-addon-sdk

在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

2 个答案:

答案 0 :(得分:1)

API Docs建议使用on这是添加事件侦听器的常用模式。

button.on('click', handleClick);

虽然这会添加另一个点击处理程序,而不是替换原始处理程序。挂起对处理程序的引用(例如handleClick)并使用button.removeListener(handleClick)删除旧的处理程序。

答案 1 :(得分:0)

最容易的事情可能不是替换处理程序,而是替换它的数据:

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

// ...

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