Window 没有收到来自 IpcRenderer 的消息
Window doesn't receive message from IpcRenderer
我正在使用 Electron + Vue 构建我的应用程序。我向主进程发送一条消息以创建一个新的 window。在 main 的方法中,我试图将消息传递给新创建的 window 但它不起作用。
我在主浏览器中的 Home 组件中调用的方法 window
ipcRenderer.send("criar-janela-instalcao");
这是主进程上的方法
ipcMain.on('criar-janela-instalcao', () => {
if (!janelaInstalacao) {
janelaInstalacao = new BrowserWindow({
height: 500,
width: 500,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
},
show: true,
});
janelaInstalacao.loadURL(urlJanelaInstalacao);
janelaInstalacao.on("closed", () => (janelaInstalacao = null));
janelaInstalacao.on('did-finish-load', () => {
janelaInstalacao.webContents.send('message', 'Hello new window');
})
}
})
这是我在组件“DownloadInstalacao”中创建的挂钩中的侦听器。这个组件在浏览器里面 window 我刚打开:
created() {
ipcRenderer.on("message", (event, message) => {
console.log(message);
});
},
window 已正确打开和加载,但控制台中未显示任何内容。
P.S.: 由于页面加载正常,我省略了变量“urlJanelaInstalacao”和“janelaInstalacao”。
原来 'did-finish-load' 事件必须应用于我的 BrowserWindow 的对象 webContents,而不是 BrowserWindow 本身
我的做法
janelaInstalacao.on('did-finish-load', () => {
janelaInstalacao.webContents.send('message', 'Hello new window');
})
正确的做法
janelaInstalacao.webContents.on('did-finish-load', () => {
janelaInstalacao.webContents.send('message', 'Hello new window');
})
我正在使用 Electron + Vue 构建我的应用程序。我向主进程发送一条消息以创建一个新的 window。在 main 的方法中,我试图将消息传递给新创建的 window 但它不起作用。
我在主浏览器中的 Home 组件中调用的方法 window
ipcRenderer.send("criar-janela-instalcao");
这是主进程上的方法
ipcMain.on('criar-janela-instalcao', () => {
if (!janelaInstalacao) {
janelaInstalacao = new BrowserWindow({
height: 500,
width: 500,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
},
show: true,
});
janelaInstalacao.loadURL(urlJanelaInstalacao);
janelaInstalacao.on("closed", () => (janelaInstalacao = null));
janelaInstalacao.on('did-finish-load', () => {
janelaInstalacao.webContents.send('message', 'Hello new window');
})
}
})
这是我在组件“DownloadInstalacao”中创建的挂钩中的侦听器。这个组件在浏览器里面 window 我刚打开:
created() {
ipcRenderer.on("message", (event, message) => {
console.log(message);
});
},
window 已正确打开和加载,但控制台中未显示任何内容。
P.S.: 由于页面加载正常,我省略了变量“urlJanelaInstalacao”和“janelaInstalacao”。
原来 'did-finish-load' 事件必须应用于我的 BrowserWindow 的对象 webContents,而不是 BrowserWindow 本身
我的做法
janelaInstalacao.on('did-finish-load', () => {
janelaInstalacao.webContents.send('message', 'Hello new window');
})
正确的做法
janelaInstalacao.webContents.on('did-finish-load', () => {
janelaInstalacao.webContents.send('message', 'Hello new window');
})