从BrowserWindow中的预加载脚本中访问webContents

时间:2016-09-10 03:41:08

标签: electron

我想在渲染过程中创建一个“Worker”[Unit] Description= Description here [Service] Type=simple ExecStart=/usr/bin/python /home/script.py StandardOutput=null [Install] WantedBy=multi-user.target Alias=script.service 。工作进程将执行一些长时间运行的计算并定期报告。

而不是直接在主进程中创建worker BrowserWindow,看起来我可以使用BrowserWindow模块在​​渲染器进程中执行此操作:

remote

我想我可以使用import remote from 'electron' const workerWindow = new remote.BrowserWindow({ show: false, webPreferences: { preload: path.join(__dirname, 'preloadWorker.js') } }); workerWindow.loadURL('file://' + __dirname + '/worker.html'); 的{​​{1}}对象来监听这样的更新:

webContents

但我无法弄清楚如何做的是从'preloadWorker.js'文件中发出事件。我想在workerWindow

中做一些事情
workerWindow.webContents.on('worker-result', (event, msg) => console.log(msg));

现在我知道我可以通过使用preloadWorker.jssetInterval(() =>{ this.webContents.send('worker-result', 'hello from worker'); }, 1000); 发送消息来完成所有这些操作,但我正在尝试为自己保存一些工作......似乎我应该能够访问不知何故,ipcMain脚本中的ipcRemote

1 个答案:

答案 0 :(得分:0)

这是一个非常老的问题,您可能不再需要它。但是,您可以使用ipcRenderer.sendToHost与预加载脚本绑定到的Web视图进行通信。

const { ipcRenderer } = require('electron');

setInterval(() => {
  ipcRenderer.sendToHost('worker-result', 'hello from worker');
}, 1000);