Wah*_*Feb 4 javascript dialog messagebox callback electron
我有一个消息框,当用户在dashboardWindow 上单击关闭时将打开该消息框(Windows 操作系统右上角的 X 按钮)
dashboardWindow.on("close", (event) => {
event.preventDefault();
console.log("before message box");
dialog.showMessageBox(
dashboardWindows,
{
message: "Test",
buttons: ["Default Button", "Cancel Button"],
defaultId: 0, // bound to buttons array
cancelId: 1 // bound to buttons array
},
(response) => {
if (response === 0) {
// bound to buttons array
console.log("Default button clicked.");
} else if (response === 1) {
// bound to buttons array
console.log("Cancel button clicked.");
}
}
);
console.log("after message box");
});
}
Run Code Online (Sandbox Code Playgroud)
当我关闭 dashboardWindow 时消息框打开,但我无法开始response === 0工作。console.log("after message box");即使没有点击按钮,Samehow 也已经运行。我如何使响应起作用(messageBox 上的返回索引按钮)?
Jos*_*ker 14
请参考关于dialog.showMessageBox 的最新 API 文档:此方法返回一个 Promise 对象并且不再使用回调函数,就像在 Electron v5.xx 之前一样
返回
Promise<Object>- 使用包含以下属性的承诺解析:
responseNumber - 单击按钮的索引。checkboxCheckedBoolean - 如果checkboxLabel设置了复选框的选中状态。否则false。
这应该可以工作(尽管在您的上下文中未经测试):
dashboardWindow.on("close", (event) => {
event.preventDefault();
console.log("before message box");
dialog.showMessageBox(
dashboardWindows,
{
message: "Test",
buttons: ["Default Button", "Cancel Button"],
defaultId: 0, // bound to buttons array
cancelId: 1 // bound to buttons array
})
.then(result => {
if (result.response === 0) {
// bound to buttons array
console.log("Default button clicked.");
} else if (result.response === 1) {
// bound to buttons array
console.log("Cancel button clicked.");
}
}
);
console.log("after message box");
});
Run Code Online (Sandbox Code Playgroud)