diff --git a/frontend/src/renderer/main/main.js b/frontend/src/renderer/main/main.js index bbc27f24..40af771f 100644 --- a/frontend/src/renderer/main/main.js +++ b/frontend/src/renderer/main/main.js @@ -7,6 +7,7 @@ const { spawn } = require('child_process'); let mainWindow; let localServer; let backendProcess; +let splashWindow; // app.disableHardwareAcceleration(); app.disableDomainBlockingFor3DAPIs(); console.log('Electron version:', process.versions.electron); @@ -187,6 +188,16 @@ function stopBackendService() { } function createWindow() { + splashWindow = new BrowserWindow({ + width: 480, + height: 320, + frame: false, + resizable: false, + alwaysOnTop: true, + backgroundColor: '#000000', + show: true + }); + splashWindow.loadFile(path.join(__dirname, 'resources/loading.html')); mainWindow = new BrowserWindow({ width: 1920, height: 1080, @@ -224,21 +235,25 @@ function createWindow() { }, 2000); } - // 窗口就绪后再显示,避免白屏/闪烁 - mainWindow.once('ready-to-show', () => { - mainWindow.show(); - }); - // 监听页面加载完成事件 mainWindow.webContents.once('did-finish-load', () => { console.log('Page loaded completely'); + if (splashWindow) { + splashWindow.close(); + splashWindow = null; + } + mainWindow.show(); }); - + // 添加加载失败的处理 mainWindow.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL) => { console.log('Failed to load:', errorDescription, 'URL:', validatedURL); + if (splashWindow) { + splashWindow.close(); + splashWindow = null; + } mainWindow.show(); // 即使加载失败也显示窗口 }); @@ -249,6 +264,10 @@ function createWindow() { } // 关闭后端服务 stopBackendService(); + if (splashWindow) { + splashWindow.close(); + splashWindow = null; + } }); } diff --git a/frontend/src/renderer/main/resources/loading.html b/frontend/src/renderer/main/resources/loading.html new file mode 100644 index 00000000..68ec8211 --- /dev/null +++ b/frontend/src/renderer/main/resources/loading.html @@ -0,0 +1,40 @@ + + +
+ + + +