当前位置: 首页 > 文档资料 > Electron 中文文档 >

ipcRenderer

优质
小牛编辑
183浏览
2023-12-01

从渲染器进程到主进程的异步通信。

进程: Renderer

ipcRenderer 是一个 EventEmitter 的实例。 你可以使用它提供的一些方法从渲染进程 (web 页面) 发送同步或异步的消息到主进程。 也可以接收主进程回复的消息。

请从 ipcMain 查看代码示例。

Communicate asynchronously from a renderer process to the main process.

Process: Renderer

The ipcRenderer module is an instance of the EventEmitter class. It provides a few methods so you can send synchronous and asynchronous messages from the render process (web page) to the main process. You can also receive replies from the main process.

See ipcMain for code examples.

方法

ipcRenderer 模块使用以下方法来监听事件和发送消息。

Methods

The ipcRenderer module has the following method to listen for events and send messages:

ipcRenderer.on(channel, listener)

  • channel String
  • listener Function

    • event IpcRendererEvent
    • ...args any[]

监听 channel, 当新消息到达,将通过 listener(event, args...) 调用 listener。

ipcRenderer.on(channel, listener)

  • channel String
  • listener Function

    • event IpcRendererEvent
    • ...args any[]

Listens to channel, when a new message arrives listener would be called with listener(event, args...).

ipcRenderer.once(channel, listener)

  • channel String
  • listener Function - 回调函数

    • event IpcRendererEvent
    • ...args any[]

为事件添加一个一次性用的listener 函数.这个 listener 只有在下次的消息到达 channel 时被请求调用,之后就被删除了.

ipcRenderer.once(channel, listener)

  • channel String
  • listener Function

    • event IpcRendererEvent
    • ...args any[]

Adds a one time listener function for the event. This listener is invoked only the next time a message is sent to channel, after which it is removed.

ipcRenderer.removeListener(channel, listener)

  • channel String
  • listener Function

为特定的 channel 从监听队列中删除特定的 listener 监听者.

ipcRenderer.removeListener(channel, listener)

  • channel String
  • listener Function

Removes the specified listener from the listener array for the specified channel.

ipcRenderer.removeAllListeners(channel)

  • channel String

移除所有的监听器,当指定 channel 时只移除与其相关的所有监听器。

ipcRenderer.removeAllListeners(channel)

  • channel String

Removes all listeners, or those of the specified 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 Number
  • channel String
  • ...args any[]

Sends a message to a window with webContentsId via channel.

ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])

  • channel String
  • ...args any[]

就像 ipcRenderer.send,不同的是消息会被发送到 host 页面上的 <webview> 元素,而不是主进程。

事件对象

The documentation for the event object passed to the callback can be found in the ipc-renderer-event structure docs.

ipcRenderer.send(channel[, arg1][, arg2][, ...])

  • channel String
  • ...args any[]

Send a message to the main process asynchronously via channel, you can also send arbitrary arguments. Arguments will be serialized in JSON internally and hence no functions or prototype chain will be included.

The main process handles it by listening for channel with ipcMain module.