Wie kann man die Funktion von Javascript Prompt
auf Elektron ersetzen?
Kann mir jemand ein Beispiel nehmen?
Ich versuche, diese Funktion Prompt
zu verwenden, es tritt jedoch ein Fehler auf:
Nicht gefundener Fehler: Prompt () wird unterstützt und wird nicht unterstützt.
Prompt
, confirm
und alert
sind Funktionen, die den Ausführungsthread des Skripts blockieren, bis eine Benutzereingabe erfolgt. Dies ist der Grund, warum das Elektron-Team es nicht unterstützt hat. Stattdessen können Sie aus dem gleichen Grund ein Drittanbieterpaket verwenden.
Hier sind einige Pakete, die diese Funktionalität asynchron bereitstellen
https://www.npmjs.com/package/Smalltalk
Eingebauter Electron Prompt vom Renderer-Prozess:
const {dialog} = require('electron').remote
const dialogOptions = {type: 'info', buttons: ['OK', 'Cancel'], message: 'Do it?'}
dialog.showMessageBox(dialogOptions, i => console.log(i))
i
ist Schaltflächenindex, also 'OK' ist 0, 'Abbrechen' ist 1 und so weiter ...
Meine Antwort ist etwas spät, aber vielleicht auch für andere hilfreich.
Da das Electron-Team das Prompt()
-Verhalten nicht selbst implementieren möchte, habe ich folgende Lösung entwickelt: electron-osx-Prompt ..__, die eine Promise-basierte Methode bietet, um einfache Benutzereingaben zu erhalten und sich an das macOS anzupassen Styling.
// From renderer or main process, doesn't matter
const userPrompt = require('electron-osx-Prompt');
const icon = __dirname + '/icon.png';
userPrompt('Label text', 'Placeholder text', icon)
.then(input => {
console.log(input);
})
.catch(err => {
console.log(err);
});