我的电子应用程序中有2个BrowserWindow(mainWindow,secondaryWindow)实例。第一个窗口(mainWindow)中有一个按钮,单击该按钮会打开另一个窗口(secondaryWindow)。
现在我的问题是,我不希望用户能够点击mainWindow上的任何内容,直到secondaryWindow关闭。
我最接近的是使用mainWindow.hide()。这只是完全隐藏了mainWindow。我想要的是用户在secondaryWindow处于活动状态时仍然可以看到mainWindow。但是当secondaryWindow处于活动状态时,应该禁用mainWindow /无效。
任何建议???
答案 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();