javascript - webContents.send 与 webContents.executeJavaScript

标签 javascript ipc electron

我的网络应用程序使用 ipcRender.send 向监听 Electron ipcMain.on 询问来自系统的值。该过程是异步的,因此一旦 Electron 从系统中获取值,它就会发起对应用程序的回调。传递值的更清洁方法是什么?我应该使用什么方法,为什么?


webContents.send

监听事件

应用程序
window.myFunction = data => setState(data)
ipcRenderer.on('my-function', (ev, data) => window.myFunction(data));
Electron
mainWindow.webContents.send('my-function', value)


webContents.executeJavaScript

函数调用

应用程序
window.myFunction = data => setState(data)
Electron
mainWindow.webContents.executeJavaScript(`myFunction(${data});`)

最佳答案

我认为主要区别在于 ipcRenderer.on 更加灵活和可扩展,因为它允许您使用 ipcRenderer 模块,它是 EventEmitter< 的一个实例。它可以添加、删除监听器(订阅者)。它还允许您同时发送同步和异步消息。

webContents.executeJavaScript 根据我的发现,您可以移除某些 HTML API 方法的限制,这些方法只能通过用户的手势调用。

例如。 请求全屏:

webContents.executeJavaScript(code[, userGesture])

userGesture 设置为 true 将消除此限制。

webContents

关于javascript - webContents.send 与 webContents.executeJavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43541320/

相关文章:

javascript - 如何从具有相同类的多个元素中获取随机元素

javascript - jQuery datetimepicker 第一次无法工作

javascript - 内置到exe文件后,Electron应用程序无法正常运行

angular - 我怎样才能在我的 Electron 应用程序中实现本地持久化?

javascript - 双端模板与服务器端 DOM 操作

javascript - 无法将所有数组键和值放入数组中

c - POSIX C 进程间通信 (IPC) 示例可以工作,但不应该

c# - 命名管道 C# 服务器 C++ .dll 客户端不工作?

c - 父进程和 2 个子进程之间通过 c 中的半双工管道进行通信的问题

javascript - 构建我的 Electron 应用程序时出错