转自 https://segmentfault.com/q/1010000015599245/
准备实现的功能:
页面1(渲染进程1)中点击按钮,发送事件给到主进程。主进程成功接收事件后,通过mainWindow.webContents.send发送事件event。在页面2(渲染进程2)中通过ipcRender.on方法监听event,当接收到event后,开始业务处理。

问题:
主进程成功接收到了页面1(渲染进程1)发送的事件,随后在主进程中通过mainWindow.webContents.send发送到事件event,页面2(渲染进程2)并没有收到。

页面1(渲染进程1):

const ipcRenderer = require('electron').ipcRenderer;
function playDanmu(){
    ipcRenderer.send('sigPlayDanmu', '123456');
 
const ipcMain = require('electron').ipcMain;
ipcMain.on('sigPlayDanmu', (event, args) => {
    console.log('sigPlayDanmu is captured');
    mainWindow.webContents.send('ping', 'pong');
 

页面2(渲染进程2):

    <script>
        require('electron').ipcRenderer.on('ping', (event, message) => {
            ...业务处理
    </script>

是哪里的姿势不对吗?

所以想问一下大家,主线程怎么主动请求渲染线程调用渲染线程的方法或触发渲染线程的事件呢?

解决办法:

在主线程中,调用webContents.send()方法的对象用错了。
往哪个窗口对应的渲染线程中发消息,就使用哪个窗口对象来调用。
上面改为page2WindowObject.webContents.send()就可以了

转载于:https://www.cnblogs.com/ybixian/p/10878899.html

原文链接:http://www.cnblogs.com/ybixian/p/10878899.html 原因:每个渲染进程都对应一个web页面,即BrowserWindow对象, 此BrowserWindow对象是在进程创建的。那么,进程向渲染进程发送消息时,调用webContents.send方法的window对象,就是此渲染进程所对应的web页面对象!!!具体来说,在进程向page1发送消息,就是page1.webContents.send()在进程向page2发送消息,就是pa... Electron介绍简单来说,Electron就是可以让你用Javascript、HTML、CSS来编写运行于Windows、macOS、Linux系统之上的桌面应用的库。本文的目的是通过使用Electron开发一个完整但简单的小应用:记事本,来体验一下这个神器的开发过程。本文犹如Hello World一样的存在,是个入门级笔记,但如果你之前从未接触过Electron,而又对它有兴趣,某想信这会是... 我用到了2种方式, 1.和浏览器里一样通过 URL或是llocalstorage 等等 2.我也是刚接触electron 没几天, 就查到了一种方式 通过webContents监听did-finish-load,然后send(). 文档上是这么讲的 Event: 'did-finish-load' 当导航完成时发出事件,onload事件也完成. 然后在这个监听里面写 we... 有时候需要进程向渲染进程发送消息,代码如下: 进程执行: mainWindow.webContents.send(‘main-process-messages’, ‘nihao’); 渲染进程监听: [1] https://blog.csdn.net/gaoxuaiguoyi/article/details/80588533 对于 渲染进程 之间的通信,可见另一篇总结:https://blog.csdn.net/weixin_42762089/article/details/88532572 下面总结一下进程和渲染进程之间的通信。 自到从:从Main到Renderer的消息传递,借助BrowerWindow.webContents.send()发送消息。 自从到:从Renderer到Main的消息传...... 1. 进程与渲染进程: 1.1 进程:只有一个,且是程序的入口,全面支持node.js,支持electron的api,可以创建多个渲染进程(即创建多个new BrowserWindow())。 1.2渲染进程:可以有多个,每个对应一个窗口,且每个都是单独的进程,全面支持node.js和DOM Api,可以使用一部分electron的api。 2. elect...