如何在 Electron 中保持多个子窗口打开?

Posted

技术标签:

【中文标题】如何在 Electron 中保持多个子窗口打开?【英文标题】:How to keep multiple subwindows open in Electron? 【发布时间】:2021-11-01 18:51:34 【问题描述】:

我的应用结构概览:

主窗口(通过win.loadURL 加载,无权访问electron)。 通过window.open(url, '_blank') 打开五个子窗口。

目前打开多个子窗口时,后打开的会替换前打开的,如何保持全部打开,而不是相互替换?

【问题讨论】:

您的window.open 电话到底是什么样的?你每次都传入相同的窗口名称吗? @pushkin 都是window.open(url, '_blank')的形式。阅读您的评论后,我尝试给他们不同的窗口名称,但没有成功。 嗯,这不应该发生。您是否在主窗口中启用了nativeWindowOpen: true @pushkin 谢谢!指定nativeWindowOpen: true后,子窗口可以保持打开状态,您可以为此发布答案。 @pushkin 此外,即使窗口名称都是_blank,它也可以工作。 【参考方案1】:

更新:在 Electron 15 中,nativeWindowOpen 默认为 true


您应该在主窗口中启用nativeWindowOpen

new BrowserWindow( webPreferences:  nativeWindowOpen: true  )

然后,每个window.open 调用(假设您没有使用相同的窗口名称,不包括像'_blank' 这样的特殊窗口名称)将打开一个全新的窗口。

【讨论】:

以上是关于如何在 Electron 中保持多个子窗口打开?的主要内容,如果未能解决你的问题,请参考以下文章

子进程打开意外的电子窗口

c# 如何保持一个MDI子窗口永远最大化?

如何在父进程被终止的情况下保持子进程的活力

如何使 MDI 子窗口保持在其兄弟窗口之上?

如何在WPF中进行模态对话?

C# 主窗口调用子窗口的值传递?