我在电子内部使用ace编辑器。在编辑器中按 ctrl+l
时prompt()
由 ace 调用。但是Electron不支持prompt()
因此该功能不起作用。
zcbenz在2014年10月26日评论道:
大多数 GUI 工具包中没有本机提示对话框,因此 在 atom-shell 中实现提示需要编写提示 在所有平台上从头开始对话。由于很少使用提示, 我认为它不值得做所有的工作,而且很容易 为此,请使用 Web 实现的解决方案。
所以我正在关闭它,因为不会修复。
我现在通过扩展 ace 解决了这个问题,但如果另一个外部模块调用prompt()
我将不得不再次做这样的事情。下面的代码绑定到 ctrl+l
,然后用 vex(另一个依赖项)替换prompt()
,然后调用 gotoLine()
:
editor.commands.addCommand({
name: "replace",
bindKey: {
win: "Ctrl-l",
mac: "Command-l"
},
exec: function(editor) {
vex.dialog.open({ // ********** prompt() **********
message: 'Enter your line number:',
buttons: [
$.extend({}, vex.dialog.buttons.YES, {
text: 'goto line'
})
],
input: "<input name="line" type="text" placeholder="line" required />n",
callback: function(data) {
if (data) {
editor.gotoLine(data.line)
editor.focus()
}
}
})
}
})
理想情况下,我只会实例化另一个模块(只添加一行),该模块将提示实现为在电子内部工作的同步函数。我想知道是否已经有一个模块?
尝试 smalltalk,这是一个基于 Promise 的解决方案,用于警报、确认和提示:https://www.npmjs.com/package/smalltalk