【问题标题】:calling prompt() in electron (from external API) does not work在电子(来自外部 API)中调用 prompt() 不起作用
【发布时间】:2016-01-18 21:52:23
【问题描述】:

我在电子内部使用ace 编辑器。在编辑器中按下ctrl+l 时,ace 会调用prompt()。但是 Electron 不支持prompt(),所以功能不起作用。

zcbenz commented on Oct 26, 2014:

大多数 GUI 工具包中没有原生提示对话框,所以 在 atom-shell 中实现提示需要编写提示 在所有平台上从头开始对话。由于很少使用提示, 我认为它不值得做所有的工作,而且很容易 为此使用网络实现的解决方案。

所以我要关闭它,因为它无法修复。

我现在已经通过扩展 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()
                }
            }
        })
    }
})

理想情况下,我只需实例化另一个模块(仅添加一行),它将提示实现为在电子内部工作的同步函数。我想知道是否已经有一个模块?

【问题讨论】:

  • 我不明白你在问什么。您在将 ACE api 集成到您的电子应用程序中时遇到问题吗?如果有,具体是什么问题?
  • 嗨,乔希,感谢您查看这个问题。我试图改进我的问题。我希望现在可以更好地理解它,因为我的问题不是很清楚。

标签: node.js ace-editor electron


【解决方案1】:

试试 smalltalk,它是一个基于 Promise 的警报、确认和提示解决方案:https://www.npmjs.com/package/smalltalk

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2017-11-27
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多