ipcRenderer 没有收到来自 webContents.send (Electron) 的消息
ipcRenderer not receiving the message from webContents.send (Electron)
在我程序的主要 window 中,我有一个按钮,如果单击该按钮,则会创建一个新的附加 window。当这个新的 window 完成加载时,我想向 ipcRenderer
发送消息;但是,到目前为止,我还无法使 ipcRenderer
能够接收消息,即使 window 已成功创建。
这是 main.js
中的代码片段:
const { ipcMain } = require('electron');
ipcMain.handle('open-window', () => {
const newWindow = createWindow();
newWindow.on('did-finish-load', () => {
newWindow.webContents.send('opened-window');
});
});
请注意,createWindow
是一个创建和 returns 浏览器 window 的函数。
下面是 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!')
})
如您所见,我希望在新 window 完成加载后在控制台中收到字符串 received message!
;然而,这并没有发生。我做错了什么?
您正在将 "opened-window"
发送到您创建的新 window,而不是按下按钮的原始按钮。
newWindow.webContents.send('opened-window')
而不是 newWindow
,您需要使用按钮和 opened-window
处理程序
来引用 window
在我程序的主要 window 中,我有一个按钮,如果单击该按钮,则会创建一个新的附加 window。当这个新的 window 完成加载时,我想向 ipcRenderer
发送消息;但是,到目前为止,我还无法使 ipcRenderer
能够接收消息,即使 window 已成功创建。
这是 main.js
中的代码片段:
const { ipcMain } = require('electron');
ipcMain.handle('open-window', () => {
const newWindow = createWindow();
newWindow.on('did-finish-load', () => {
newWindow.webContents.send('opened-window');
});
});
请注意,createWindow
是一个创建和 returns 浏览器 window 的函数。
下面是 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!')
})
如您所见,我希望在新 window 完成加载后在控制台中收到字符串 received message!
;然而,这并没有发生。我做错了什么?
您正在将 "opened-window"
发送到您创建的新 window,而不是按下按钮的原始按钮。
newWindow.webContents.send('opened-window')
而不是 newWindow
,您需要使用按钮和 opened-window
处理程序