如何在Electron中让所有window.open调用打开的窗口自动最大化
Electron window.open 新窗口最大化实现方案
你可以通过主进程拦截window.open的窗口创建请求,在保留标题栏的前提下实现新窗口最大化,具体实现如下:
适配 Electron 12+ 版本(推荐)
Electron 12及以上版本推荐使用官方提供的setWindowOpenHandler接口拦截窗口创建请求:
const { BrowserWindow } = require('electron') // 你的主窗口初始化逻辑 const mainWindow = new BrowserWindow({ // 主窗口原有配置项 }) // 注册window.open请求拦截器 mainWindow.setWindowOpenHandler((details) => { // 异步创建子窗口避免阻塞主进程 setImmediate(() => { const childWindow = new BrowserWindow({ // 子窗口自定义配置,无需添加fullscreen: true,默认保留标题栏 show: false // 先隐藏窗口,最大化完成后再显示避免闪烁 }) // 加载window.open请求的目标地址 childWindow.loadURL(details.url) // 窗口资源准备完成后执行最大化再显示 childWindow.once('ready-to-show', () => { childWindow.maximize() childWindow.show() }) }) // 阻止Electron默认的窗口创建逻辑 return { action: 'deny' } })
适配 Electron 12 以下旧版本
如果使用的是12以下的Electron版本,可以通过监听new-window事件实现相同效果:
mainWindow.webContents.on('new-window', (event, url) => { // 阻止默认窗口创建行为 event.preventDefault() const childWindow = new BrowserWindow({ show: false }) childWindow.loadURL(url) childWindow.once('ready-to-show', () => { childWindow.maximize() childWindow.show() }) })
内容的提问来源于stack exchange,提问作者Wenfang Du
相关产品推荐
相关产品推荐

