我的Web应用程序使用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方法中的限制,这些方法只能由用户的手势来调用。

对于前。 requestFullScreen:

webContents.executeJavaScript(code[, userGesture])

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

webContents

09-18 13:12