Quiero agregar un título personalizado para mi ventana sin marco con botones personalizados.
Tengo dos archivos de script: index.js , que se ejecuta automáticamente al iniciar Electron, y app.js , que se agregó en index.html con la etiqueta <script src> .
Hay un problema: require() no permite que el script funcione; ninguna de las líneas se ejecuta si necesito algún módulo, sin importar cuál sea.
índice.html:
<head> ... <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="app.js"></script> ... </head>índice.js
const {app, BrowserWindow} = require('electron') const path = require('path') const sass = require('sass') const fs = require('fs') // Creates a main window function createWindow () { renderStylesheets() let mainWindow = new BrowserWindow({ width: 800, height: 600, resizable: true, transparent: true, frame: false, webPreferences: { preload: path.join(__dirname, 'preload.js') } }) mainWindow.loadFile('index.html').then(() => {}) } ...aplicación.js
alert("This alert won't show.") // If I remove these lines, alerts and jQuery's "$(callback)" will run, but // button actions won't work :( const { BrowserWindow, app } = require('electron').remote; let window = BrowserWindow.getFocusedWindow(); alert("This alert won't show and the $(() => {}) won't run too.") ...¿Dónde está el problema? Si está en index.html , entonces el problema está en la línea 4 de lo que se muestra. Asegúrese de estar haciendo referencia al sitio web correcto y de que está haciendo referencia a los datos correctos.
Si el problema está en index.js , entonces el problema puede estar en la línea 8 de lo que se muestra, ya que debe asegurarse de que la variable "aplicación" se mencione o indique con un valor antes de la línea 8.
Esas son las únicas dos cosas que veo de inmediato que podrían estar contribuyendo a este problema.
Espero que esto ayude.
El problema es que app.js y cualquier otra secuencia de comandos no tienen una función require . Para agregar un acceso a la función Node.js fuera del script principal, configuro nodeIntegration: true y contextIsolation: false en el inicializador de la ventana:
mainWindow = new BrowserWindow({ width: 900, height: 600, resizable: true, transparent: true, show: true, frame: false, center: true, webPreferences: { preload: path.join(__dirname, 'preload.js'), nodeIntegration: true, // <- This one contextIsolation: false, // <- And this one } })