我正在使用 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/