如何从电子主进程中访问BrowserWindow Javascript全局?

时间:2015-06-06 10:21:17

标签: javascript electron

我想要一个菜单​​,在主进程中定义,在原子/电子应用程序的当前浏览器窗口中调用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')

1 个答案:

答案 0 :(得分:34)

Here是对您在api中对webContents流程的评论的引用,在&#34;注意:&#34;在遥控器下。

但是,如果您只想触发某个功能,还可以使用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;