如何从Electron中的主进程访问BrowserWindow JavaScript全局变量?

6tdlim6h  于 2022-12-08  发布在  Electron
关注(0)|答案(2)|浏览(354)

我希望在主进程中定义一个菜单,以便在AtomElectron应用程序的当前浏览器窗口中调用JavaScript代码。
从浏览器窗口获取主进程全局变量

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

主进程的等价物是什么(AKA get the current window globals)?

// JavaScript inside the main process
const BrowserWindow = require('browser-window')
//...
// Inside the menu callback
let window    = BrowserWindow.getFocusedWindow()
let commander = window.global('commander') /// <---- Pseudocode!!!
commander.handleCommand('File.Save')
qvtsj1bj

qvtsj1bj1#

下面是您对API中webContents进程的评论的参考,在remotes下的“Note:“中。
然而,如果你只想触发一个函数,你也可以使用webContents.send()和ipc(main process)进程来触发相应的代码运行。

// JavaScript inside the 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;
f0ofjuux

f0ofjuux2#

对于电子版本11.x.x,您可以执行此操作

// In renderer process

const { ipcRenderer } = window.require("electron");

ipcRenderer.on("your-event-here", () => {

    //hand your event here 
    
});

//In the main process

import { ipcMain } from "electron";

ipcMain.handle("handle-event-here", async (event, data) => {

  // write custom code here

});

相关问题