Идентификатор окна создания электронного пропуска в новом BrowserWindow - PullRequest
0 голосов
/ 06 сентября 2018

Я создаю электронное приложение, которое запускает пользовательский скрипт на веб-сайте в фоновом режиме. Этот код выполняется во втором окне, созданном главным окном. Затем второе окно создает другое скрытое окно, в которое будет загружен веб-сайт и будет выполнен пользовательский скрипт. Мне нужно иметь возможность передать идентификатор окна второго окна скрытому окну, чтобы, когда пользовательский скрипт завершил работу, он мог отправить сообщение 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, он не определен. Как я могу определить второе окно из скрытого окна, чтобы я мог отправлять ему сообщения?

1 Ответ

0 голосов
/ 06 сентября 2018

В вашем win.webContents.executeJavaScript вы можете установить переменную внутри функции выполнения javascript следующим образом:

win.webContents.executeJavaScript("var creatorId = " + currentWindow.webContents.id + ";");

Это значит, что вы можете удалить: win.creatorId = currentWindow.id;. И изменить:

BrowserWindow.fromId(currentWindow.creatorId).webContents.send('coolMessage', {});

Кому:

BrowserWindow.fromId(creatorId).webContents.send('coolMessage', {});

webContents.id Документы

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