You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:06:00