Electronjs ipcMain不';t使用IPC渲染器将消息发送到另一个窗口
我正在尝试将文本从一个窗口发送到另一个窗口,但我做不到 这是我主要听的地方Electronjs ipcMain不';t使用IPC渲染器将消息发送到另一个窗口,electron,ipc,ipcrenderer,Electron,Ipc,Ipcrenderer,我正在尝试将文本从一个窗口发送到另一个窗口,但我做不到 这是我主要听的地方 ipcMain.on('fromRenderer1', (e,arg) => { createWindow2() console.log(arg) window2.webContents.on("toRenderer2",()=>{ window2.webContents.send("toRenderer2","h
ipcMain.on('fromRenderer1', (e,arg) => {
createWindow2()
console.log(arg)
window2.webContents.on("toRenderer2",()=>{
window2.webContents.send("toRenderer2","hi from main")
})
})
我可以在console.log中看到terminal中的文本,但当我尝试将文本“hi from main”发送到window2时,不会调用该文本
这是window2代码
const { ipcRenderer } = require("electron");
ipcRenderer.on('toRenderer2',(event,arg) =>{
console.log(arg)
})
这很奇怪,因为如果我在window1工作中也这样做。
这是window1的代码,我在其中调用IpcMain
const { ipcRenderer } = require("electron");
ipcRenderer.send('fromRenderer1','hi from renderer1');
您需要等待
窗口2
加载后再向其发送任何内容。因此,确保它会回报一个承诺
设置一个did finish load
侦听器并解析其中的承诺
主要
//保留全局引用,这样它们就不会被垃圾回收
让窗口2
//为渲染器-1创建侦听器
ipcMain.on('from-renderer-1',(事件,有效负载)=>{
createWindow2()
.然后(()=>{
window2.webContents.send('message-1',有效负载)
})
})
//为渲染器-1创建“回复”侦听器
ipcMain.on('message-1-reply',(事件、数据)=>{
window1.webContents.send('message-1-reply-for-renderer-1',data)
如果(窗口2){
window2.close()
}
})
函数createWindow2(){
返回新承诺((解决、拒绝)=>{
const developmentPath=`${process.env.WEBPACK\u DEV\u SERVER\u URL}/window2.html`
const productionPath=app://./window2.html'
window2=新浏览器窗口({…})
//加载窗口URL
if(process.env.WEBPACK\u DEV\u SERVER\u URL){
window2.loadURL(开发路径)
}
否则{
window2.loadURL(productionPath)
}
//创建“关闭”侦听器
window2.on('关闭',()=>{
window2=null
})
//创建“完成加载”侦听器
window2.webContents.on('did-finish-load',()=>{
解决()
})
})
}