【问题标题】:How to access BrowserWindow Javascript global from main process in electron?如何从电子的主进程访问 BrowserWindow Javascript 全局?
【发布时间】:2015-08-21 07:06:07
【问题描述】:

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

【问题讨论】:

  • 这工作:window.webContent.executeJavaScript("commander.handleCommand('File.Save')")

标签: javascript electron


【解决方案1】:

Here 是对您对 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;

【讨论】:

  • require('ipc') 现在已弃用。使用require('electron').ipcRenderer
猜你喜欢
  • 1970-01-01
  • 2020-12-19
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
相关资源
最近更新 更多