Я создаю электронное приложение, которое запускает пользовательский скрипт на веб-сайте в фоновом режиме. Этот код выполняется во втором окне, созданном главным окном. Затем второе окно создает другое скрытое окно, в которое будет загружен веб-сайт и будет выполнен пользовательский скрипт. Мне нужно иметь возможность передать идентификатор окна второго окна скрытому окну, чтобы, когда пользовательский скрипт завершил работу, он мог отправить сообщение ipc обратно во второе окно.
Я обнаружил проблему на github , когда в 2016 году кто-то ответил, что выяснилось, что вы можете назначить пользовательские значения для победы и затем прочитать их во вновь созданном окне, но у меня не получилось реализовать это.
// In second window
const currentWindow = require('electron').remote.getCurrentWindow();
// Create hidden window
win = new BrowserWindow({ show: false });
win.creatorId = currentWindow.id; // CUSTOM: Set creator window ID
win.webContents.openDevTools();
win.webContents.on('dom-ready', () => {
// Load dependencies every time a new url is loaded
win.webContents.executeJavaScript(`
const currentWindow = require('electron').remote.getCurrentWindow();
alert(currentWindow.creatorId); // This is undefined :(
const { BrowserWindow } = require('electron').remote;
const ipc = require('electron').ipcRenderer;
window.$ = window.jQuery = require('jquery');
`);
});
...
worker.win.loadURL(`random.webpage`);
// Run custom script on a website and send the result back to the creator window
win.webContents.executeJavaScript(`
$(document).ready(function () {
BrowserWindow.fromId(currentWindow.creatorId).webContents.send('coolMessage', {});
});
`);
Когда я пытаюсь прочитать win.creatorId, он не определен. Как я могу определить второе окно из скрытого окна, чтобы я мог отправлять ему сообщения?