1

在我的程序的主窗口中,我有一个按钮,如果单击该按钮,则会创建一个新的附加窗口。当这个新窗口完成加载时,我想向ipcRenderer; 但是,到目前为止ipcRenderer,即使窗口创建成功,我也无法接收消息。

以下是 中的代码片段main.js

const { ipcMain } = require('electron');

ipcMain.handle('open-window', () => {
    const newWindow = createWindow();
    newWindow.on('did-finish-load', () => {
        newWindow.webContents.send('opened-window');
    });
});

请注意,这createWindow是一个创建并返回浏览器窗口的函数。

这是代码片段preload.js

const { ipcRenderer } = require('electron');

window.addEventListener('DOMContentLoaded', () => {
  document.getElementById('openWindow').addEventListener('click', () => {
        ipcRenderer.invoke('open-window');
    });
});

ipcRenderer.on('opened-window', () => {
    console.log('received message!')
})

如您所见,我希望在received message!新窗口完成加载后在控制台中接收字符串;但是,这并没有发生。我究竟做错了什么?

4

1 回答 1

0

您正在发送"opened-window"到您创建的新窗口,而不是按下按钮的原始窗口。

newWindow.webContents.send('opened-window')

而不是,您需要使用按钮和处理程序newWindow来引用窗口opened-window

于 2021-12-26T03:39:07.493 回答