gpt4 book ai didi

javascript - Electron中父子窗口之间如何发送数据

转载 作者:行者123 更新时间:2023-12-03 01:20:29 32 4
gpt4 key购买 nike

因此,我正在使用 Electron 框架构建一个应用程序,并在通过父窗口的单击事件打开子窗口时尝试在父窗口和子窗口之间传递一些数据。我使用 ipcMain 和 ipcRenderer 将消息从父渲染器进程传递到主进程,再传递到子渲染器进程。我可以跟踪进入主进程的数据,但它不会发送到最终渲染器。我不太清楚为什么,但我的直觉是,这与从主窗口打开子窗口与从主窗口通过 .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>

我知道这个问题之前已经在这里被问过,并且我已经查看了其他示例,但到目前为止它们还没有起作用。

最佳答案

只有在窗口选项中设置 show: false 后,Window.on('show') 事件才会触发。

winPodInfo = new BrowserWindow({
show: false
});

winPodInfo.once("show", function() {
winPodInfo.webContents.send("channel", arg);
});

winPodInfo.once("ready-to-show", () => {
winPodInfo.show();
});

关于javascript - Electron中父子窗口之间如何发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51789711/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com