Electron 中 JavaScript 获取 BrowserWindow 实例的方法
在 Electron 应用中,您可以通过预加载脚本 (preload.js) 访问 BrowserWindow
实例。这对于调用窗口相关的 API(例如最大化、最小化或关闭窗口)非常有用。
首先,在创建 BrowserWindow
实例时,将预加载脚本指定为 webPreferences
选项的一部分:
const { BrowserWindow } = require('electron');
const path = require('path');
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
},
});
接下来,在预加载脚本 (preload.js) 中,使用 window.require()
函数导入主进程模块。这允许访问 BrowserWindow
模块和其他 Electron API:
// preload.js
const { BrowserWindow } = require('electron');
// 获取当前聚焦的 BrowserWindow 实例
const currentWindow = BrowserWindow.getFocusedWindow();
// 或者,如果需要访问创建窗口的实例,可以在主进程中将实例传递给渲染进程:
// (在主进程中)
// win.webContents.on('did-finish-load', () => {
// win.webContents.send('window-instance', win);
// });
// (在渲染进程中)
// const { ipcRenderer } = require('electron');
// ipcRenderer.on('window-instance', (event, windowInstance) => {
// const myWindow = windowInstance;
// });
// 使用 currentWindow 实例
if (currentWindow) {
// 例如,最大化窗口
currentWindow.maximize();
}
通过以上方法,您就可以在渲染进程的 JavaScript 代码中安全地访问和操作 BrowserWindow
实例了。 请注意,getFocusedWindow()
方法返回当前获得焦点的窗口,如果没有窗口获得焦点,则返回 null
。 为了确保始终能够访问正确的窗口实例,建议在主进程中将窗口实例通过 IPC 传递给渲染进程,如注释中所示。