Подтвердить что ты не робот

Как получить доступ к BrowserWindow Javascript глобальный от основного процесса в электронном?

Я хочу, чтобы меню, определенное в основном процессе, вызывало JS-код внутри текущего окна браузера в приложении Atom/Electronic.

Получение основных глоссалов процесса из окна браузера

const remote = require('remote')
const foo    = remote.getGlobal('foo')

Что эквивалентно основному процессу (aka get current globals). Это то, что я хочу сделать в псевдокоде

// JS inside main process
const BrowserWindow = require('browser-window')
//...
// Inside the menu callback
let window    = BrowserWindow.getFocusedWindow()
let commander = window.global('commander') /// <---- PSEUDO-CODE !!!
commander.handleCommand('File.Save')
4b9b3361

Ответ 1

Здесь приведена ссылка на ваш комментарий о процессе webContents в api в разделе "Примечание:" в разделе "Пульты".

Однако, если вы просто хотите вызвать функцию, вы также можете использовать webContents.send() и ipc (основной процесс) для запуска соответствующего кода для запуска. Что-то вроде этого...

// JS inside main process
const window = require('electron').BrowserWindow;

ipc.on('menuItem-selected', function(){
    let focusedWindow    = window.getFocusedWindow();
    focusedWindow.webContents.send('file-save');
});

// Inside the menu callback
require('ipc').on('file-save', function() {
  // File save function call here
});

Обновление:

Для версии Electron версии 0.35.0 и выше ipc api изменился на следующее:

// In main process.
const ipcMain = require('electron').ipcMain;

// In renderer process (web page).
const ipcRenderer = require('electron').ipcRenderer;