import { BrowserWindow, app } from 'electron'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); // 创建主窗口,根据环境加载不同内容源 export function createWindow() { const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged; const mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { preload: path.join(__dirname, '..', 'preload.cjs'), nodeIntegration: false, contextIsolation: true } }); // 设置窗口事件处理(禁用关闭确认对话框等) setupWindow(mainWindow); if (isDev) { mainWindow.loadURL('http://localhost:5173'); mainWindow.webContents.openDevTools(); } else { mainWindow.loadFile(path.join(__dirname, '..', 'dist/index.html')); } return mainWindow; } // 设置窗口事件处理(禁用关闭确认对话框等) function setupWindow(mainWindow) { // 禁用窗口关闭确认对话框,直接关闭 mainWindow.on('close', (event) => { // 不阻止关闭事件,直接关闭窗口 // 如果需要清理资源,可以在这里添加 }); // 禁用 webContents 的 beforeunload 确认对话框 mainWindow.webContents.on('will-prevent-unload', (event) => { // 不阻止卸载,直接关闭 // 注意:这里不需要调用 event.preventDefault(),因为我们要允许关闭 }); // 禁用 beforeunload 事件(前端页面可能触发的确认对话框) mainWindow.webContents.setWindowOpenHandler(() => { return { action: 'allow' }; }); // 禁用所有可能阻止关闭的事件 mainWindow.webContents.on('beforeunload', (event) => { // 不阻止卸载 }); }