如何从电子主进程访问 BrowserWindow Javascript 全局?
How to access BrowserWindow Javascript global from main process in electron?
我想要一个在主进程中定义的菜单,用于在 atom/electron 应用程序中调用当前浏览器 window 中的 JS 代码。
从浏览器获取主进程全局变量 window 是
const remote = require('remote')
const foo = remote.getGlobal('foo')
主进程的等价物是什么(又名获取当前 window 全局变量)。这就是我想用伪代码做的
// 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')
Here 是对您在 api 中关于远程 "Note:" 中 webContents 进程的评论的引用。
然而,如果您只想触发一个功能,您也可以使用 webContents.send() and 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;
我想要一个在主进程中定义的菜单,用于在 atom/electron 应用程序中调用当前浏览器 window 中的 JS 代码。
从浏览器获取主进程全局变量 window 是
const remote = require('remote')
const foo = remote.getGlobal('foo')
主进程的等价物是什么(又名获取当前 window 全局变量)。这就是我想用伪代码做的
// 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')
Here 是对您在 api 中关于远程 "Note:" 中 webContents 进程的评论的引用。
然而,如果您只想触发一个功能,您也可以使用 webContents.send() and 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;