首页 > 解决方案 > 在异步代码完成执行后触发的电子 webview 的自定义事件

问题描述

所以正如标题所示,我webview在 Electron 中加载了一个,我需要它在这个 webview 中的异步代码完成执行后触发一个事件。现在,dom-ready同步代码完成执行后立即触发该事件,因此我无法使用它。还有其他我可以尝试的活动吗(据我所知,没有 - 我已经检查过了)?或者,有什么方法可以设置脚本执行后可以触发的自定义事件。任何帮助表示赞赏。

PS:我不能在这里发布代码,我认为这个问题是不言自明的。

标签: javascriptelectron

解决方案


您可以使用 Electron 的进程间通信 (IPC) 来实现这一点。

首先,您需要从 webview(渲染器进程)向主进程发送一条消息,如下所示:

var ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.send('async-code-finished');

然后在您的主进程中接收消息:

var ipcMain = require('electron').ipcMain;
ipcMain.on('async-code-finished', function () {
    // Do what you want here.
});

如果这不起作用,请检查您的BrowserWindow webPreferences设置:

  • nodeIntegration应设置为true
  • contextIsolation应设置为false

像这样:

new BrowserWindow({
    webPreferences:  {
        nodeIntegration:  true,
        contextIsolation: false
    },
});

阅读更多:


推荐阅读