Electron-IPC-отправка данных между окнами

в основном процессе я создаю окно под названием mainWindow. При нажатии кнопки я создаю новый browserWindow под названием notesWindow.

то, что я хочу сделать, это отправить данные из notesWindow to mainWindow

то, что я сделал, используется IPC send для первой отправки данных из notesWindow в основной процесс, получить данные о главном процессе, а затем отправить эти данные в mainWindow, а mainWindow не удается получить событие отправителя. Отправка данных в основной процесс работает нормально, но из основного процесс browserWindow, похоже, не работает.

main.js

const ipcMain = require('electron').ipcMain;

ipcMain.on('notes', function(event, data) {
      console.log(data) // this properly shows the data
      event.sender.send('notes2', data);
});

noteWindow.js

const ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.send('notes', "new note");

главное окно.js

const ipcRenderer = require("electron").ipcRenderer;
ipcRenderer.on('notes2', function(event, data) {
    // this function never gets called
    console.log(data);
});

может кто-нибудь объяснить, что я делаю неправильно? Заранее спасибо!

1 ответов


mainWindow не может получить событие, потому что оно не отправляется ему. The events.sender.send() код main.js отправит данные обратно тому, кто отправил notes событие, которое в данном случае является noteWindow. Так что notes2 событие отправляется обратно в noteWindow вместо mainWindow.

отправить notes2 событие mainWindow, проверьте webContents.send(). Это позволяет основному процессу отправлять данные через события в определенное окно. После некоторых изменения в main.js это будет выглядеть примерно так:

ipcMain.on('notes', function(event, data) {
    mainWindow.webContents.send('notes2', data);
});