Подскажите на Электрон

Как заменить функцию JavaScript prompt на электроне?

Может кто-нибудь взять мне пример?

Я пытаюсь использовать эту функцию prompt, но возникает ошибка:

Uncaught Error: prompt () есть и не будет поддерживаться.

2 ответа

Решение

prompt, confirm а также alert являются функциями, которые блокируют поток выполнения скрипта до тех пор, пока пользователь не введет данные, и поэтому электронная команда не поддержала его. Вместо этого вы можете использовать сторонний пакет по той же причине.

Вот некоторые пакеты, которые предоставляют эту функциональность асинхронным способом

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

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

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

Мой ответ немного опоздал, но, возможно, все еще полезен для других.

Так как команда Electron не хочет реализовывать prompt() Поведение себя, я разработал это решение: Electron-OSX-подскажите. Он предоставляет основанный на Promise способ получения простого пользовательского ввода и адаптируется к стилю macOS.

// 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);
  });

Встроенная электронная подсказка от процесса рендерера:

const {dialog} = require('electron').remote

const dialogOptions = {type: 'info', buttons: ['OK', 'Cancel'], message: 'Do it?'}

dialog.showMessageBox(dialogOptions, i => console.log(i))

i это индекс кнопок, поэтому "ОК" равен 0, "Отмена" равен 1 и т. д.

Другие вопросы по тегам