webContents.send 对比 webContents.executeJavaScript
webContents.send vs webContents.executeJavaScript
我的网络应用程序使用 ipcRender.send
向监听电子 ipcMain.on
询问系统的值。该过程是异步的,因此一旦电子从系统中获取值,它就会发起对应用程序的回调。传递价值的更清洁方法是什么?我应该使用什么方法,为什么?
webContents.send
监听事件
应用程序
window.myFunction = data => setState(data)
ipcRenderer.on('my-function', (ev, data) => window.myFunction(data));
电子
mainWindow.webContents.send('my-function', value)
webContents.executeJavaScript
函数调用
应用程序
window.myFunction = data => setState(data)
电子
mainWindow.webContents.executeJavaScript(`myFunction(${data});`)
我认为主要区别在于 ipcRenderer.on
更灵活和可扩展,因为它允许您使用 ipcRenderer
模块,它是 EventEmitter
的一个实例。它可以添加、删除监听器(订阅者)。它还允许您同时发送同步和异步消息。
webContents.executeJavaScript
根据我的发现,只允许您删除某些 HTML API 方法的限制,这些方法只能通过用户的手势调用。
例如。 requestFullScreen
:
webContents.executeJavaScript(code[, userGesture])
将 userGesture
设置为 true
将取消此限制。
我的网络应用程序使用 ipcRender.send
向监听电子 ipcMain.on
询问系统的值。该过程是异步的,因此一旦电子从系统中获取值,它就会发起对应用程序的回调。传递价值的更清洁方法是什么?我应该使用什么方法,为什么?
webContents.send
监听事件
应用程序window.myFunction = data => setState(data)
ipcRenderer.on('my-function', (ev, data) => window.myFunction(data));
电子
mainWindow.webContents.send('my-function', value)
webContents.executeJavaScript
函数调用
应用程序window.myFunction = data => setState(data)
电子
mainWindow.webContents.executeJavaScript(`myFunction(${data});`)
我认为主要区别在于 ipcRenderer.on
更灵活和可扩展,因为它允许您使用 ipcRenderer
模块,它是 EventEmitter
的一个实例。它可以添加、删除监听器(订阅者)。它还允许您同时发送同步和异步消息。
webContents.executeJavaScript
根据我的发现,只允许您删除某些 HTML API 方法的限制,这些方法只能通过用户的手势调用。
例如。 requestFullScreen
:
webContents.executeJavaScript(code[, userGesture])
将 userGesture
设置为 true
将取消此限制。