javascript - 使用 Mozilla SDK 的 Firefox 扩展中带有面板的切换按钮

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

我正在使用 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 始终为 true。最后,切换不会以这种方式工作,因为单击“切换”按钮时面板永远不会隐藏。

非常感谢,我已经尝试了很多东西..一切都有效。 提前致谢!

最佳答案

只需使用console.log即可查看状态内的内容:

{
  "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

关于javascript - 使用 Mozilla SDK 的 Firefox 扩展中带有面板的切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918368/

相关文章:

css - 为什么样式不适用于 Firefox 中的 svg 元素?

javascript - 将 Chrome 扩展移植到 Firefox

firefox - 强制 Firefox 重用现有选项卡来修改 HTML 文件

javascript - 在 Firefox 中本地存储 XML 文件

firefox - Firefox 扩展的初始框架?

javascript - 仅在登录时显示本地存储中的对象

php - 如何通过 php 检测任何站点的 favicon(快捷方式图标)?

javascript - 如何将 Blob 附加到 FormData

JavaScript For 循环数组迭代问题 - 使用一个循环与两个循环

internet-explorer - 使用 CSS 设置宽度时内联 block 元素出现问题