electron 如何从index.html调用index.js函数

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

所以我正在做一个电子应用程序,我不知道如何从index.html调用main.js文件中的函数。我找了几个小时,甚至问了朋友,但没有人知道答案。
所以要么是因为太简单了没人费心写下来要么就是我做错了什么.

dgiusagp

dgiusagp1#

了解the "process model" in Electron会对你有很好的帮助。
正如Chromium所基于的,Electron使用一个加载“main.js”脚本的进程(称为 *main进程 *),以及另一个加载HTML文档(“index.html”)的进程(称为 *renderer进程 *),该进程依次加载网页脚本(“index.js”)。
如果主进程加载多个HTML文档,则可能有 * 多个 * 渲染器进程,但电子应用程序只有一个主进程。
要在“main.js”(或它导入的脚本)中定义一个函数,并从Web页面脚本中调用它,您需要[从呈现器进程向主进程发送一条消息],并在主进程中接收它。
该消息是通过调用ipcRenderer object that is part of Electron API上的send方法,由Web页脚本发送的:

const { ipcRenderer } = require("electron");
ipcRenderer.send("foo", "bar");

上面的命令将在通道“foo”上发送消息“bar”。要接收和处理消息(在您的情况下调用您选择的某个函数),您可以在“main”脚本中为消息设置一个监听器(例如main.js),并调用所需的函数(如下面的some_func):

const { ipcMain } = require("electron");
ipcMain.on("foo", message => {
    some_func();
});

不管怎么说,这是惯用的方法。

chy5wohz

chy5wohz2#

在渲染器上使用ipcMain
ipcMain模块是一个事件发射器。在主进程中使用时,它处理从渲染器进程(网页)发送的异步和同步消息。从渲染器发送的消息将发射到此模块。https://www.electronjs.org/docs/latest/api/ipc-main/
示例:https://www.electronjs.org/docs/latest/tutorial/dark-mode

相关问题