因此,我正在使用Electron框架构建一个应用程序,并尝试在父窗口的单击事件上打开子窗口时,在父窗口和子窗口之间传递一些数据。我使用ipcMain和ipcRenderer将消息从父渲染器进程传递到主进程,再传递给子渲染器进程。我可以跟踪到达主进程的数据,但是它不会被发送到最终的渲染器。我真的不太确定为什么,但我的直觉是,这与从main打开子窗口的事件与从main通过.webContents.send()发送数据的事件的协调有关。
相关代码:
将数据从父节点发送到主节点
listItem.click(function(){
ipcRenderer.send('synchronous-message',feedUrl);
})
在main中侦听数据,初始化并打开子窗口,然后将数据发送给子窗口
let winPodInfo;
ipcMain.on('synchronous-message',(event,arg)=>{
winPodInfo = new BrowserWindow({
width:500,
parent:mainWindow,
modal:true,
frame:false
});
winPodInfo.loadURL(`file://${__dirname}/podcastInfo.html`);
winPodInfo.once('show',function(){
winPodInfo.webContents.send('synchronous-message',arg);
})
winPodInfo.once('ready-to-show', () => {
winPodInfo.show();
});
})
在子渲染器中检查消息
<script>
const electron = require('electron');
const {ipcRenderer} = electron;
ipcRenderer.on('synchronous-message',(event,arg)=>{
console.log(arg);
})
</script>
我知道这个问题以前在这里被问过,我也看过其他的例子,但到目前为止它们还没有起作用。
https://stackoverflow.com/questions/51789711
复制相似问题