【问题标题】:Replace 'Prompt' in on Electron在 Electron 中替换“提示”
【发布时间】:2016-12-15 23:31:31
【问题描述】:

如何替换电子中javascriptprompt的功能?

谁能给我一个例子?

我尝试使用函数prompt,但报错:

未捕获的错误:prompt() 被支持并且将不被支持。

【问题讨论】:

  • 我猜一个允许你创建跨平台应用程序的框架,基于 Node.js,不一定支持浏览器方法,如警报、提示等,原因很明显,没有浏览器显示它。
  • @adeneo Electron 在每个平台上都基于 Chromium,所以是的,有一个浏览器,它总是一样的 :)

标签: javascript electron


【解决方案1】:

promptconfirmalert 是在用户输入之前阻塞脚本执行线程的函数,这就是电子团队不支持它的原因。相反,您可以出于同样的原因使用一些第三方软件包。

这里有一些以异步方式提供此功能的包

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

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

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

【讨论】:

  • 我可以致电alertconfirm。这不是预期的吗?
  • 答案就在电子文件window-setup.js中。 window.alertwindow.confirm 有实现,但 window.prompt 抛出异常。
  • smalltalk 不适用于开箱即用的电子!
【解决方案2】:

我的回答有点晚,但可能对其他人仍有帮助。

由于 Electron 团队不想自己实现 prompt() 行为,我开发了这个解决方案:electron-osx-prompt。 它提供了一种基于 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);
  });

【讨论】:

  • 我用这个发现Electron 5.x+,需要编辑index.js文件,在BrowserWindow创建过程中添加webPreferences { nodeIntegration: true }。
猜你喜欢
  • 2015-09-18
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
相关资源
最近更新 更多