Рендерер не получает данные от другого рендерера при использовании ipc - PullRequest
0 голосов
/ 26 июня 2018

У меня проблемы с отправкой данных из одного рендерера в другой с помощью ipc. Я пытаюсь добиться следующего: отправить переменную из index.js в cves.js. Я сохранил результаты console.log для отладки. Я получаю 2 сообщения - "index.js отправляет сообщение об обновлении-цели-ОС". и "main.js получает сообщение update-target-os и отправляет targetOS." Но я не получаю "cves.js получает targetOS". снимок экрана для справки

Мои файлы кода находятся здесь: https://github.com/ohmtrivedi/electronProject.

Надеюсь, кто-нибудь поможет мне с этим. Только что изучил электрон и пытаюсь создать приложение для учебных целей.

1 Ответ

0 голосов
/ 27 июня 2018

Я посмотрел на ваш код, и мне кажется, проблема в здесь , когда вы отправляете канал targetOS через mainWindow s webContents.

mainWindow - это объект BrowserWindow для файла src/index.html; но вы хотите получить его для объекта BrowserWindow за src/cves.html.

Один из способов добиться того, чего вы пытаетесь достичь, - это обновить код для создания объекта BrowserWindow (скажем, cvesWindow) для src/cves.html на main.js (когда канал update-target-os вместо создания в методе cell_cves.addEventListener в index.js.

А в main.js в разделе update-target-os установите полученное значение для переменной main.js, скажем, osGuess.

Тогда в вашем файле cves.js может быть что-то вроде:

 ipcRenderer.send('cves-loaded', true);

Вы можете выполнить его после загрузки содержимого DOM. Это уведомит основной процесс о том, что ваш CVES BrowserWindow загружен. Затем main.js может отправить значение для события, например:

ipcMain.on('cves-loaded', (event, arg) => {
  cvesWindow.webContents.send('targetOS', osGuess);
})

Так, что он получен пещерами BrowserWindow.

Мне удалось получить значение, отображаемое на элементе osname в cves.html с приведенными выше обновлениями логики.

Возможно, есть и другие способы сделать это, но я бы рекомендовал использовать одностраничное приложение , если все, что вам нужно, это открыть диалоговое окно со списком дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...