【问题标题】:Toggle button with panel in Firefox extension with Mozilla SDK带有 Mozilla SDK 的 Firefox 扩展中带有面板的切换按钮
【发布时间】:2014-08-05 19:03:48
【问题描述】:

我正在使用 Mozilla SDK 开发一个 firefox 扩展。情况是: 我想要一个切换/操作按钮来显示/隐藏扩展的面板。

我的代码:

// the panel
let panel = require("sdk/panel").Panel({
    // ...
    onHide: handleHide
});

// the button
let button = ToggleButton({
    // ...
    // will be executed, when user clicks the button
    onChange: handleChange
});

// event handlers
function handleChange(state) {
    // state.checked is always true
    if (???) {
        panel.show();
    } 
}

function handleHide() {
    // un-check the button
    button.state('window', {checked: false});
}

问题是,在 handleChange 内部,切换逻辑应该在哪里,我无法判断面板应该显示还是隐藏。 In the docs 有一个使用 state.checked 的示例,但由于此代码是在我单击按钮时运行的,所以 state.checked 始终为真。最后,切换不会以这种方式工作,因为单击“切换”按钮时面板永远不会隐藏。

帮助很大,我已经尝试了很多东西.. mothings 工作。 提前致谢!

【问题讨论】:

  • 您使用的是 Firefox 30 吗?可能是该代码在 Firefox

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


【解决方案1】:

只需使用 console.log 即可查看 state 中的内容:

{
  "disabled": false,
  "checked": false,
  "label": "the default label",
  "icon": "./icon.png",
  "id": "show-panel"
}

所以我们可以这样继续:

if(state.checked)
{
   myExt.show();
   return false;
} else {
   myExt.hide();
   return false;
}

在旧版本中,您需要返回 false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多