提示电子

时间:2016-08-09 19:25:00

标签: javascript electron

如何在电子上替换javascript optionMenu.popoverPresentationController?.sourceView = currentCell.contentView optionMenu.popoverPresentationController?.sourceRect = currentCell.contentView.bounds 的功能?

有人可以举个例子吗?

我尝试使用此函数prompt,但发生错误:

  

未捕获错误:提示符()是否受支持。

3 个答案:

答案 0 :(得分:12)

promptconfirmalert是阻止脚本执行线程的功能,直到用户输入,这就是电子团队不支持它的原因。相反,您可以出于同样的原因使用某些第三方软件包。

以下是一些以异步方式提供此功能的软件包

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

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

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

答案 1 :(得分:1)

渲染器过程中内置的电子提示:

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,依此类推...

答案 2 :(得分:0)

我的回答有点晚了,但也许对其他人还是有帮助的。

由于电子团队不希望自己实现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);
  });