我正在开发的桌面应用程序使用电子,场景是我有2 BrowserWindow,从FirstBrwoserWindow,我要去SecondBrowserWindow后,按钮单击。我已经实例化了SecondBrowserWindow,在FirstBrwoserWindow的按钮单击以避免对象已被销毁异常。
按照电子的说法,如果我们想在进程之间发送数据,我们必须使用IPC。因此,实际问题从这里开始,我在FirstBrwoserWindow的呈现器文件中创建SecondBrowserWindow对象,对于IPC,我需要在主进程中获取SecondBrowserWindow对象。
如何在main.js中获取main.js对象并在那里使用IPC.on?
发布于 2017-12-15 13:29:16
我解决这一问题的方法是使用ipcRenderer将数据从第一个窗口传递到主进程,然后使用ipcMain使用BrowserWindow.webContents.send()将数据传递给第二个窗口。
看上去有点像这样。
窗口1
...
// Emit an ipc message with your data
ipcRenderer('your-message', { foo: 'bar' });
...主进程
...
let window1 = new BrowserWindow(...);
let window2 = new BrowserWindow(...);
...
// when ipc message received pass it on to second window object with webContents
ipcMain.on('your-message', (event, payload) => {
window2.webContents.send('your-relayed-message', payload);
});
...窗口2
...
// when ipc messaged received in second window do what you want with the data
ipcRenderer.on('your-relayed-message', (event, payload) => {
console.log(payload);
});
...发布于 2017-12-15 13:52:29
你可以用更多的方式做这件事,但我建议你:
1)当您收到在渲染器中打开第二个BrowserWindow的输入时,向main.js发送一条消息
2) from main.js,打开第二个BrowserWindow,这样您就可以控制它并以更干净的方式向它发送消息。
通过这种方式,您可以在没有通信错误的情况下关闭前面的BrowserWindow,并且您有一个更可伸缩的和可读的N BrowserWindows 逻辑。
https://stackoverflow.com/questions/47833017
复制相似问题