leo*_*ess 1 javascript modal-dialog node.js electron
我的电子应用程序在main.js中定义了BrowserWindow mainWindow。它加载一个html,并最终在html内脚本运行该函数,该函数显示一个简单的警告:dialog.showMessageBox()
dialog.showMessageBox({
type: 'warning',
message: "You have been warned.",
buttons: ["OK"]
});
Run Code Online (Sandbox Code Playgroud)
我希望此对话框是mainWindow b / c的子级,使其成为模态,该模态将禁用mainWindow,直到将其关闭。要实现这一点,通常只需mainWindow,在类型声明之前添加即可。不幸的是,它不知道变量mainWindow,因为它dialog.showMessageBox()是在另一个脚本(site.js)中创建的。
如何创建一个对话框,该对话框是mainWindow的子级,而不在main.js中创建它?可以IPC帮助不知何故?
接受的答案仍然是正确的,但相当旧,与此同时,Electron 团队决定慢慢弃用该remote模块(更多信息请参见此处和此处):
然而,我能够通过使用 来修复它BrowserWindow.getFocusedWindow(),这只做了一个微小的假设,即触发 MsgBox 的窗口是当前关注的窗口(我的猜测是,在 99% 的情况下都是如此)。这是更新后的代码:
const { dialog, BrowserWindow } = require ("electron");
dialog.showMessageBox (BrowserWindow.getFocusedWindow(), {
type: "warning",
message: "You have been warned.",
buttons: ["OK"]
});
Run Code Online (Sandbox Code Playgroud)
您可以使用Electron的remote模块BrowserWindow从该窗口中包含(加载)的脚本中获取电流:
const remote = require ("electron").remote;
dialog.showMessageBox (remote.getCurrentWindow (), {
type: "warning",
message: "You have been warned.",
buttons: ["OK"]
});
Run Code Online (Sandbox Code Playgroud)