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

时间:2016-03-18 07:33:05

标签: javascript electron

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

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

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

任何建议???

3 个答案:

答案 0 :(得分:5)

您可以在孩子打开时使用parent/child concept禁用父级:

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()
})

答案 1 :(得分:0)

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

答案 2 :(得分:0)

无法获得@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();