En la ventana principal de mi programa, tengo un botón que, si se hace clic, crea una nueva ventana adicional. Cuando esta nueva ventana termine de cargarse, quiero enviar un mensaje a ipcRenderer ; sin embargo, hasta ahora no he podido hacer que ipcRenderer pueda recibir el mensaje, a pesar de que la ventana se creó correctamente.
Aquí hay un fragmento del código en main.js :
const { ipcMain } = require('electron'); ipcMain.handle('open-window', () => { const newWindow = createWindow(); newWindow.on('did-finish-load', () => { newWindow.webContents.send('opened-window'); }); }); Tenga en cuenta que createWindow es una función que crea y devuelve una ventana del navegador.
Y aquí hay un fragmento del código en 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!') }) Como puede ver, ¡esperaría recibir en la consola el received message! después de que la nueva ventana termine de cargarse; sin embargo, esto no está sucediendo. ¿Qué estoy haciendo mal?
Está enviando "opened-window" a la nueva ventana que creó, no a la original en la que se presionó el botón.
newWindow.webContents.send('opened-window') en lugar de newWindow , debe consultar la ventana con el botón y el controlador opened-window