¿Cómo puedo obtener el resultado del evento en browserView? Tengo:
browserView.webContents.executeJavaScript(' let btn = document.createElement("button") btn.innerHTML = "Click Me" btn.addEventListener("click", function () { return "Button is clicked" }) document.body.appendChild(btn) ').then(r=> console.log(r))¿Qué debo hacer para obtener "Se hace clic en el botón" después de hacer clic en el botón en el proceso principal y agregar a la variable?
En mis soluciones, necesitamos preload browserView :
const browserView = new BrowserView({ webPreferences: { preload: path.join(__dirname, 'preload.js') } }) preload.js
const {ipcRenderer} = require('electron') window.addEventListener('DOMContentLoaded', () => { let btn = document.createElement("button") btn.innerHTML = "Click Me" btn.addEventListener("click", function () { ipcRenderer.send('message','button is clicked') }) document.body.appendChild(btn) }) ¡Y funciona! En el proceso principal con ipcMain.on recibimos "se hace clic en el botón"
Básicamente, debe encontrar una forma de llamar a ipcRenderer en la vista, ej. ipcRenderer.send('message', 'hi') . Y en el hilo principal, puede hacer ipcMain.on('message', () => {}) .
Pero para su pregunta, ¿cómo accede a ipcRenderer ? Probar
browserView.webContents.executeJavaScript(' const { ipcRenderer } = require('electron') ipcRenderer.send('message', 'hi') Y en el index.js
const { ipcMain } = require('electron') ipcMain.on('message', (e, t) => { console.log(t) })