【问题标题】:dialog.showMessageBoxSync(null, options) getting hiddendialog.showMessageBoxSync(null, options) 被隐藏
【发布时间】:2020-02-11 15:00:54
【问题描述】:

我有一个 Electron 应用程序。如果我使用dialog.showmessageBoxSync 通常它必须等待用户输入。选项包括:关闭、取消或确定。

它工作正常,但如果我在对话框外部(我的应用程序内的任何位置)单击,则此消息框将隐藏。我无法点击任何选项。

在用户选择要单击的按钮或关闭对话框之前,如何使消息框保持焦点?在继续在应用程序的其余部分工作之前,应强制用户响应消息框。

dialog.showMessageBoxSync({
                    type: "info",
                    buttons: ["Ok,", "Cancel"],
                    defaultId: 0,
                    title: "",
                    message:""
                    cancelId: 1,
})

【问题讨论】:

    标签: dialog modal-dialog electron


    【解决方案1】:

    我建议传入父窗口

    来自docs

    browserWindow 参数允许对话框将自己附加到一个 父窗口,使其成为模态。


     const iconPath = upath.toUnix(upath.join(__dirname, "app", "assets", "icon.png"));
        const dialogIcon = nativeImage.createFromPath(iconPath);
    
        var options = {
            type: 'question',
            buttons: ['&Yes', '&No'],
            title: 'Confirm Quit',
            icon: dialogIcon,
            normalizeAccessKeys: true,
            message: 'Do you really want to close the application?'
        };
    
        const win = BrowserWindow.getFocusedWindow();
        dialog.showMessageBox(win, options)
            .then((choice) => {
                if (choice.response === 0) {
                    quitApplication();
                }
            }).catch(err => {
                console.log('ERROR', err);
            });
    

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      相关资源
      最近更新 更多