electron中处理不同html页面中的通信问题主要是通过主进程做一个桥接作用,来完成通信。
首先在main.js中引入 const ipc = require('electron').ipcMain;
其他页面中对应的js文件中引入 const ipc = require('electron').ipcRenderer;
(文件不能交换,主进程与渲染进程的差别)
然后可以使用 ipc.on(事件名称,响应事件function); 来监听事件,
使用ipc.send(事件名称) 来发送事件。 (注意响应事件的注册要在发送事件的前面噢)
比如:
ipc.on("hereyoua",function(event,data){ //如果没有数据需要传,可以不写参数
console.log(data);
})
ipc.send("hereyoua",data); //后面跟着的data就是自己想传的数据,不想传不写就可以了
这样就简单完成了事件的响应与发送。(注意这种只适应在同一个html页面中噢)
不同页面中的html交互,需要把数据传到主进程中,再由主进程传出来,即A页面——main.js——B页面
A页面发送数据,请求刷新B页面
ipc.send("refreshB",data);
main.js接收数据,再发送数据给B页面
ipc.on("refreshB",function(event,data){
winB.webContents.send('AwantrefreshYou',data); //winB就是B页面在main.js中注册的窗口名
})
B页面接收main.js发出来的信息并进行相应操作
ipc.on('AwantrefreshYou',function(event,data){
//你想要进行的操作
})
这样就完成了两个页面之间的交互。event.sender.send也是发送数据的,但是监听的只有当前渲染的页面,对于两个不同html页面之间的交互是存在问题的。
窗口名.webContents.send(事件名称,数据); 这种方式发送数据,就是发送到对应的监听窗口










网友评论