electron退出时添加一个包含“不再提示”选项的确认对话框

在 Electron 中添加一个包含"不再提示"选项的确认对话框可以通过 checkboxLabelcheckboxChecked 属性在 dialog.showMessageBox 函数中实现。这两个属性分别用于设置复选框的标签和初始状态。您可以根据用户的选择来决定是否在将来再显示此对话框。

以下是一个更新的示例,其中加入了"不再提示"的复选框:

javascript 复制代码
const { app, BrowserWindow, dialog } = require('electron');
const fs = require('fs');
const path = require('path');

// 设置配置文件路径
const configPath = path.join(app.getPath('userData'), 'config.json');

// 从文件读取配置
function readConfig() {
  try {
    return JSON.parse(fs.readFileSync(configPath, 'utf8'));
  } catch (error) {
    return { showPrompt: true };
  }
}

// 写入配置到文件
function writeConfig(config) {
  fs.writeFileSync(configPath, JSON.stringify(config), 'utf8');
}

app.on('ready', () => {
  let mainWindow = new BrowserWindow({
    width: 800,
    height: 600
  });

  mainWindow.on('close', (e) => {
    e.preventDefault(); // 阻止默认关闭操作

    const config = readConfig();

    if (config.showPrompt) {
      dialog.showMessageBox(mainWindow, {
        type: 'question',
        buttons: ['Yes', 'No'],
        title: 'Confirm',
        message: 'Are you sure you want to quit?',
        checkboxLabel: 'Do not ask me again',
        checkboxChecked: false
      }).then(result => {
        if (result.response === 0) { // 用户点击了"Yes"
          if (result.checkboxChecked) {
            writeConfig({ showPrompt: false });
          }
          mainWindow = null; // 销毁窗口
          app.quit(); // 退出应用
        }
      });
    } else {
      mainWindow = null; // 直接销毁窗口
      app.quit(); // 退出应用
    }
  });

  mainWindow.loadURL('https://www.example.com');
});

在这个例子中:

  • 使用 fs 模块来读取和写入配置文件,这个文件用于保存用户的选择是否再次显示提示。
  • checkboxLabel 设置了复选框的标签。
  • checkboxChecked 控制复选框的初始勾选状态。
  • 当用户勾选"不再提示"并确认关闭时,应用会更新配置文件以记录这一选择,并在下次尝试关闭时直接退出,不再显示对话框。

这样,用户就可以控制是否希望在未来被再次提示。

相关推荐
怕浪猫2 天前
Electron 开发实战(五):文件系统与本地数据持久化全解
前端·javascript·electron
怕浪猫3 天前
Electron 开发实战(四):深入进程通信 IPC 全解(安全通信+多窗口互通)
前端·javascript·electron
lqj_本人3 天前
鸿蒙electron框架PC适配:ExifCleaner 适配鸿蒙全过程:一次从“能启动”到“能处理文件”的完整复盘
华为·electron·harmonyos
ZengLiangYi4 天前
系统托盘 + 窗口状态持久化:Electron 细节
前端·electron
夜雪闻竹4 天前
Electron 入门:Web 应用打包成桌面软件
前端·javascript·electron
lqj_本人4 天前
鸿蒙PC:从一个普通 Electron 项目到鸿蒙可运行项目:vmd-master 适配实战全记录
华为·electron·harmonyos
怕浪猫4 天前
# Electron 开发实战(三):基础UI开发与布局全解
前端·javascript·electron
fhqlongteng4 天前
RK3576上electron调用GPU的功能设置方法
前端·javascript·electron·gpu·rk3576
lqj_本人4 天前
鸿蒙electron框架适配PC:从桌面番茄钟到鸿蒙可用应用:Pomotroid 适配全过程复盘
华为·electron·harmonyos
ZengLiangYi5 天前
Electron 入门:Web 应用打包成桌面软件
前端·electron