web-dev-qa-db-ja.com

ElectronのメインプロセスからBrowserWindow Javascriptグローバルにアクセスする方法は?

メインプロセスで定義されたメニューが、原子/電子アプリケーションの現在のブラウザーウィンドウ内のJSコードを呼び出すようにします。

ブラウザウィンドウからメインプロセスグローバルを取得する

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

メインプロセス(現在のウィンドウグローバルの取得)に相当するものは何ですか。これは私が擬似コードでやりたいことです

// 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

ここ は、APIのwebContentsプロセスに関するコメントへの参照で、リモートの「注:」にあります。

ただし、関数をトリガーするだけの場合は、 webContents.send() および ipc(main process) プロセスを使用して、実行する適切なコードをトリガーすることもできます。このようなもの...

// 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;
35
Josh