我的电子应用定义 main.js 中的BrowserWindow
mainWindow 。它加载一个html,最终在html内部运行一个显示简单警告的函数dialog.showMessageBox()
:
dialog.showMessageBox({
type: 'warning',
message: "You have been warned.",
buttons: ["OK"]
});
我希望此对话框成为 mainWindow b / c的子对象,使其成为模态,在关闭之前禁用 mainWindow 。要实现这一点,通常只需在类型声明之前添加mainWindow,
。不幸的是,它不知道变量 mainWindow ,因为dialog.showMessageBox()
是在不同的脚本( site.js )中创建的。
如何创建一个对话框,它是 mainWindow 的子对象而不在 main.js 中创建它? 可以ipc以某种方式提供帮助吗?
答案 0 :(得分:6)
您可以使用Electron的remote
模块从该窗口中包含(加载)的脚本中获取当前BrowserWindow
:
const remote = require ("electron").remote;
dialog.showMessageBox (remote.getCurrentWindow (), {
type: "warning",
message: "You have been warned.",
buttons: ["OK"]
});
答案 1 :(得分:2)
接受的答案仍然是正确的,但已经很旧了,与此同时,Electron 团队决定慢慢弃用 remote
模块(更多信息 here 和 here):>
但是,我能够通过使用 BrowserWindow.getFocusedWindow()
修复它,这只是一个很小的假设,即触发 MsgBox 的窗口是当前正在聚焦的窗口(我的猜测是在 99% 的情况下真的)。这是更新后的代码:
const { dialog, BrowserWindow } = require ("electron");
dialog.showMessageBox (BrowserWindow.getFocusedWindow(), {
type: "warning",
message: "You have been warned.",
buttons: ["OK"]
});