Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ipcRenderer.on()函数未接收mainWindow.WebContent.send()_Javascript_Node.js_Electron - Fatal编程技术网

Javascript ipcRenderer.on()函数未接收mainWindow.WebContent.send()

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

在electron main.js中,我想将事件从子窗口发送到主窗口。我认为这样做的方式是从childWindow向主进程发送一个事件,然后主进程向主窗口发送一个事件

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控制台是否有错误。