在异步代码完成执行后触发的电子 webview 的自定义事件
Custom event for electron webview that fires after asynchronous code has finished executing
正如标题所示,我正在 Electron 中加载一个 webview
,我需要它在 此 webview 中的异步代码执行完成后触发一个事件.现在,dom-ready
事件在同步代码执行完毕后立即触发,因此我无法使用它。有没有我可以尝试的其他事件(据我所知,没有 - 我已经检查过)?或者,有什么方法可以设置可以在脚本执行后触发的自定义事件。感谢任何帮助。
P.S:我不能post这里的代码,我认为问题是self-explanatory。
您可以使用 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
},
});
阅读更多:
正如标题所示,我正在 Electron 中加载一个 webview
,我需要它在 此 webview 中的异步代码执行完成后触发一个事件.现在,dom-ready
事件在同步代码执行完毕后立即触发,因此我无法使用它。有没有我可以尝试的其他事件(据我所知,没有 - 我已经检查过)?或者,有什么方法可以设置可以在脚本执行后触发的自定义事件。感谢任何帮助。
P.S:我不能post这里的代码,我认为问题是self-explanatory。
您可以使用 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
},
});
阅读更多: