- ipcRenderer
- 方法
- ipcRenderer.on(channel, listener)
- ipcRenderer.once(channel, listener)
- ipcRenderer.removeListener(channel, listener)
- ipcRenderer.removeAllListeners(channel)
- ipcRenderer.send(channel[, arg1][, arg2][, …])
- ipcRenderer.sendSync(channel[, arg1][, arg2][, …])
- ipcRenderer.sendTo(webContentsId, channel, [, arg1][, arg2][, …])
- ipcRenderer.sendToHost(channel[, arg1][, arg2][, …])
- 事件对象
- 方法
ipcRenderer
从渲染器进程到主进程的异步通信。
进程: Renderer
ipcRenderer
是一个 EventEmitter 的实例。 你可以使用它提供的一些方法从渲染进程 (web 页面) 发送同步或异步的消息到主进程。 也可以接收主进程回复的消息。
请从 ipcMain 查看代码示例。
方法
ipcRenderer
模块使用以下方法来监听事件和发送消息。
ipcRenderer.on(channel, listener)
channel
Stringlistener
Function
监听 channel, 当新消息到达,将通过 listener(event, args…) 调用 listener。
ipcRenderer.once(channel, listener)
channel
Stringlistener
Function
为事件添加一个一次性用的listener 函数.这个 listener 只有在下次的消息到达 channel 时被请求调用,之后就被删除了.
ipcRenderer.removeListener(channel, listener)
channel
Stringlistener
Function
为特定的 channel 从监听队列中删除特定的 listener 监听者.
ipcRenderer.removeAllListeners(channel)
channel
String
移除所有的监听器,当指定channel
时只移除与其相关的所有监听器。
ipcRenderer.send(channel[, arg1][, arg2][, …])
channel
String…args
any[]
通过channel
发送异步消息到主进程,可以携带任意参数。 在内部,参数会被序列化为 JSON,因此参数对象上的函数和原型链不会被发送。
主进程可以使用 ipcMain
监听channel 来接收这些消息。
ipcRenderer.sendSync(channel[, arg1][, arg2][, …])
channel
String…args
any[]
返回any
- 由ipcMain
处理程序发送过来的值。通过
channel
发送同步消息到主进程,可以携带任意参数。 在内部,参数会被序列化为 JSON,因此参数对象上的函数和原型链不会被发送。主进程可以使用
ipcMain
监听 channel来接收这些消息,并通过event.returnValue
设置回复消息。
注意: 发送同步消息将会阻塞整个渲染进程,你应该避免使用这种方式 - 除非你知道你在做什么。
ipcRenderer.sendTo(webContentsId, channel, [, arg1][, arg2][, …])
webContentsId
Numberchannel
String…args
any[]
Sends a message to a window withwebContentsId
viachannel
.
ipcRenderer.sendToHost(channel[, arg1][, arg2][, …])
channel
String…args
any[]
就像ipcRenderer.send
,不同的是消息会被发送到 host 页面上的<webview>
元素,而不是主进程。
事件对象
传递给 callback 的 event 对象有如下方法:
event.senderId
Returns the webContents.id
that sent the message, you can call event.sender.sendTo(event.senderId, …)
to reply to the message, see ipcRenderer.sendTo for more information. This only applies to messages sent from a different renderer. Messages sent directly from the main process set event.senderId
to 0
.