在 Electron(来自外部 API)中调用 prompt() 不起作用



我在电子内部使用ace编辑器。在编辑器中按 ctrl+lprompt() 由 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

相关内容

  • 没有找到相关文章

最新更新