将 IPC 消息从主进程发送到渲染进程 Electron
Send IPC message from main process to renderer process Electron
目前我有一个 Electron 菜单,上面有一个保存按钮。当按下这个保存按钮时,我希望向渲染器进程发送一个事件,以便渲染器处理该事件。
这是我尝试过的:
菜单来源
const menuTemplate = [
{
label: "File",
submenu: [
{
label: "Save",
accelerator: "Ctrl+S",
click: () => {
BrowserWindow.getFocusedWindow().webContents.send("save");
}
},
]
},
]
渲染源
ipc.on("save", () => {
console.log("save");
})
预加载源
import { contextBridge, ipcRenderer } from "electron";
contextBridge.exposeInMainWorld("ipc", { on: ipcRenderer.on });
尝试此操作时,按下保存按钮时我没有得到任何输出,包括没有错误。我可以确认 Electron 使用了正确的菜单,并且 click()
函数正在执行。我还可以确认 ipc.on
确实在渲染器中定义。
我怎样才能让它工作?提前致谢。
尝试在开启功能中手动设置 this
。
contextBridge.exposeInMainWorld("ipc", { on: ipcRenderer.on.bind(ipcRenderer) });
或者创建一个传递参数的新函数:
contextBridge.exposeInMainWorld("ipc", { on(event, fn) { ipcRenderer.on(event, fn) } });
目前我有一个 Electron 菜单,上面有一个保存按钮。当按下这个保存按钮时,我希望向渲染器进程发送一个事件,以便渲染器处理该事件。
这是我尝试过的:
菜单来源
const menuTemplate = [
{
label: "File",
submenu: [
{
label: "Save",
accelerator: "Ctrl+S",
click: () => {
BrowserWindow.getFocusedWindow().webContents.send("save");
}
},
]
},
]
渲染源
ipc.on("save", () => {
console.log("save");
})
预加载源
import { contextBridge, ipcRenderer } from "electron";
contextBridge.exposeInMainWorld("ipc", { on: ipcRenderer.on });
尝试此操作时,按下保存按钮时我没有得到任何输出,包括没有错误。我可以确认 Electron 使用了正确的菜单,并且 click()
函数正在执行。我还可以确认 ipc.on
确实在渲染器中定义。
我怎样才能让它工作?提前致谢。
尝试在开启功能中手动设置 this
。
contextBridge.exposeInMainWorld("ipc", { on: ipcRenderer.on.bind(ipcRenderer) });
或者创建一个传递参数的新函数:
contextBridge.exposeInMainWorld("ipc", { on(event, fn) { ipcRenderer.on(event, fn) } });