Quiero un menú, definido en el proceso principal para llamar al código JS dentro de la ventana del navegador actual en una aplicación atom/electron.
Obtener los globales del proceso principal desde la ventana del navegador es
const remote = require('remote') const foo = remote.getGlobal('foo')¿Cuál es el equivalente para el proceso principal (también conocido como obtener las ventanas globales actuales). Esto es lo que quiero hacer en pseudocódigo
// 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')Aquí hay una referencia a su comentario sobre el proceso de contenido web en la API, en la "Nota:" debajo de los controles remotos.
Sin embargo, si solo desea activar una función, también puede usar los procesos webContents.send() e ipc (proceso principal) para activar la ejecución del código apropiado. Algo como esto...
// 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 });Para la versión Electron 0.35.0 y superior, la API de ipc cambió a lo siguiente:
// In main process. const ipcMain = require('electron').ipcMain; // In renderer process (web page). const ipcRenderer = require('electron').ipcRenderer;