Javascript ipcRenderer.on()函数未接收mainWindow.WebContent.send()
在electron main.js中,我想将事件从子窗口发送到主窗口。我认为这样做的方式是从childWindow向主进程发送一个事件,然后主进程向主窗口发送一个事件Javascript ipcRenderer.on()函数未接收mainWindow.WebContent.send(),javascript,node.js,electron,Javascript,Node.js,Electron,在electron main.js中,我想将事件从子窗口发送到主窗口。我认为这样做的方式是从childWindow向主进程发送一个事件,然后主进程向主窗口发送一个事件 ipcMain.on('submit-form-data', (event, data) => { if (data) { console.log('send data to main window') mainWindow.webContents.send('submitted-f
ipcMain.on('submit-form-data', (event, data) => {
if (data) {
console.log('send data to main window')
mainWindow.webContents.send('submitted-form', data)
}
childWindow.hide();
})
childWindow成功地将其表单数据发送到主进程。但是当我希望主进程将数据发送到主窗口时,事件没有被拾取。我不知道我能做些什么来让它工作
主窗口中的index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Main Window</title>
<script>
var ipcRenderer = nodeRequire("electron").ipcRenderer;
ipcRenderer.on("submitted-form", function (event, data) {
alert('received data'); // this never gets called :(
});
</script>
主窗口
var ipcRenderer=nodeRequire(“电子”).ipcRenderer;
关于(“提交的表单”,函数(事件、数据){
警报('received data');//这永远不会被调用:(
});
如果可以,您需要在浏览器窗口上启用节点集成
,并修复IPC渲染器的导入
:
app.js(主流程)
const{app,BrowserWindow}=require(“电子”)
const url=require(“url”)
const path=require(“路径”)
让主窗口
app.on(“就绪”,函数(){
主窗口=新浏览器窗口({
宽度:500,
身高:300,
网络首选项:{
无融合:对
}
})
mainWindow.loadURL(url.format({
路径名:path.join(uu dirname,“index.html”),
协议:“文件:”,
斜杠:对
}))
mainWindow.toggleDevTools()
设置超时(()=>{
日志(“从主进程发送消息”)
main window.webContents.send(“提交的表单”、“您好”)
}, 3000)
})
index.html(渲染器进程)
使用javascript进行索引
常量{IPC}=require(“电子”)
关于(“提交的表单”,函数(事件、数据){
console.log(“接收数据”,数据)
警报(“收到的数据”)
});
包装您的mainWindow.webContents.send('submitted-form',data);
与mainWindow.webContents.on('did-finish-load',()=>{});
。它解决了我的问题,希望对您也有帮助
mainWindow.webContents.on('did-finish-load', ()=>{
mainWindow.webContents.send('submitted-form', data);
})
从我所读到的内容来看,我认为
alert
在Electron中不起作用。请尝试console.log()
谢谢,但我已经有了将nodeIntegration设置为true的主窗口。我尝试了导入,但它仍然没有接收到事件:(从一个空项目开始,看看这是否有效。检查DevTools控制台是否有错误。