Tengo una aplicación electron.js simple, electron-quick-start en la que estoy usando <webview> .
Por defecto, los enlaces en los que se establece target=_blank no se abren dentro de la webview .
Hay alguna solución al escuchar el evento new-window dado en No se pueden abrir los enlaces de vista web de Electron con destino = en blanco
Pero esta solución no funciona cuando nativeWindowOpen: true en webPreferences en la ventana principal. Más bien, la aplicación se bloquea cuando agrego allowpopups en MacOS con un error exited with signal SIGSEGV
const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { preload: path.join(__dirname, 'preload.js'), webviewTag: true, nativeWindowOpen: true // This flag is not letting recieve new-window event from webview } }) index.html es
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP --> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'"> <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'"> <title>Hello World!</title> </head> <body> <h1>Hello World!</h1> <webview id="foo" src="https://www.w3schools.com/tags/att_a_target.asp" style="display:inline-flex; width:640px; height:480px" allowpopups></webview> <h1>click on Try it yuorself button in webview</h1> <!-- You can also require other files to run in this process --> <!-- <script src="./renderer.js"></script> --> </body> </html> ¿Cómo puedo obtener enlaces de vista web donde target=_blank funcione manteniendo nativeWindowOpen: true en la ventana principal?
nativeWindowOpen se configurará como true de forma predeterminada de acuerdo con los cambios planificados de API (15.0)
Intenté escribir una esencia con Electron fiddle. Quizás no capté tu problema, pero para mí está funcionando https://gist.github.com/deb6ed0fa37860fdfc0d51c6782f4152
Este fue un error https://github.com/electron/electron/pull/29874 que se solucionó.
electron versión 12.0.14 o superior funciona bien para este problema.