web-dev-qa-db-fra.com

Comment accéder à BrowserWindow Javascript global à partir du processus principal dans l'électron?

Je veux un menu, défini dans le processus principal, pour appeler le code JS à l'intérieur de la fenêtre du navigateur actuel dans une application atom/électron.

Obtenir les globaux du processus principal depuis la fenêtre du navigateur est

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

Quel est l'équivalent pour le processus principal (aka obtenir les globaux de la fenêtre actuelle). Voilà ce que je veux faire en pseudo-code

// 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')
29
gaspard

Ici est une référence à votre commentaire sur le processus webContents dans l'API, dans la "Note:" sous les télécommandes.

Cependant, si vous souhaitez simplement déclencher une fonction, vous pouvez également utiliser les processus webContents.send () et ipc (processus principal) pour déclencher le code approprié à exécuter. Quelque chose comme ça...

// 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
});

Mise à jour:

Pour Electron version 0.35.0 et supérieure, l'api ipc a changé comme suit:

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

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