webentwicklung-frage-antwort-db.com.de

Eingabeaufforderung für Elektron

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. 

13
Thales

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

https://www.npmjs.com/package/vex-js

https://www.npmjs.com/package/dialogs

10
Zayn Ali

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 ...

1
Damjan Pavlica

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);
  });
0
Peter Freeman