繁体   English   中英

如何在Github Electron Atom中禁用或生成非活动的浏览器窗口

[英]How to disable or make inactive Browser Window in Github Electron Atom

我的电子应用程序中有2个BrowserWindow(mainWindow,secondaryWindow)实例。第一个窗口(mainWindow)中有一个按钮,单击该按钮将打开另一个窗口(secondaryWindow)。

现在我的问题是,我不希望用户能够点击mainWindow上的任何内容,直到secondaryWindow关闭。

我最接近的是使用mainWindow.hide()。这只是完全隐藏了mainWindow。我想要的是用户在secondaryWindow处于活动状态时仍然可以看到mainWindow。但是当secondaryWindow处于活动状态时,mainWindow应该被禁用/不活动。

有什么建议 ???

您可以使用父/子概念在子项打开时禁用父项:

let top = new BrowserWindow()
let child = new BrowserWindow({parent: top})

您还可以将概念扩展到完整模态窗口,如下所示:

let child = new BrowserWindow({parent: top, modal: true, show: false})
child.loadURL('https://github.com')
child.once('ready-to-show', () => {
  child.show()
})

无法在Electron中禁用窗口。 我所知道的唯一选择是从窗口内部禁用JS中的所有内容。 或者可能会在窗口中显示覆盖所有内容的叠加div。

无法让@Jens Habegger的解决方案为我工作。 由于我使用的是bootstrap + jquery样式应用程序,因此我希望显示背景以防止交互,但仍然可以看到内容。 这让用户在视觉上知道窗口被禁用输入。

...
mainWindow.webContents.executeJavaScript("$('<div class=\"modal-backdrop\" style=\"opacity:0.5 !important;\"></div>').appendTo(document.body);");

modal.on('close',function() {
  mainWindow.webContents.executeJavaScript("$(\".modal-backdrop\").remove();");
});

modal.show();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM