• 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][, …])
    • 事件对象
      • event.senderId

    ipcRenderer

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

    进程: Renderer

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

    请从 ipcMain 查看代码示例。

    方法

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

    ipcRenderer.on(channel, listener)

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

    ipcRenderer.once(channel, listener)

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

    ipcRenderer.removeListener(channel, listener)

    • channel String
    • listener 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 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> 元素,而不是主进程。

    事件对象

    传递给 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.