问题描述
我在本地存储中有一些数据必须在 app.quit() 上删除.但我认为从主要过程中无法做到这一点.
I have some data in the localstorage that has to be deleted on app.quit(). But I see no way to do so from the main process.
有没有办法从 main 调用 renderer 函数?
Is there a way to call a renderer function from main?
我知道 var remote = require('remote'); 但它似乎只走错了方向.
I know about var remote = require('remote'); but it seems to go only in the wrong direction.
推荐答案
您可以通过 webContents.send 将消息从主进程发送到渲染器进程,如此处文档中所述:http://www.51sjk.com/Upload/Articles/1/0/336/336112_20221103095832371.jpg
You can send messages from the main process to a renderer process via webContents.send as called out in the documentation here: http://www.51sjk.com/Upload/Articles/1/0/336/336112_20221103095832371.jpg
以下是您直接从文档中执行此操作的方法:
Here is how you do it straight from the docs:
在主进程中:
// In the main process. var window = null; app.on('ready', function() { window = new BrowserWindow({width: 800, height: 600}); window.loadURL('file://' + __dirname + '/index.html'); window.webContents.on('did-finish-load', function() { window.webContents.send('ping', 'whoooooooh!'); }); });
在 index.html 中:
In index.html:
<!-- index.html --> <html> <body> <script> require('electron').ipcRenderer.on('ping', function(event, message) { console.log(message); // Prints "whoooooooh!" }); </script> </body> </html>
注意它是异步的.我不确定这对您的特定解决方案有何影响,但这至少应该让您与渲染器进程对话.
Note it is asynchronous. I am not sure how that affects things with your particular solution, but this should at least get you talking back to the renderer process.