簡體   English   中英

用戶輸入帶有Electron的JavaScript-替代Window.Prompt()

[英]User input JavaScript with Electron - alternative to Window.Prompt()

首先,在這里對它進行過多研究之前,我問過這個問題的簡單版本。 但是,當我搜索事物時,事情變得更加復雜,我可以對其進行更多描述。

我正在嘗試用Google的Blockly創建一個Electron App。 在Blockly的域中重命名變量會在用戶瀏覽器中打開提示,要求您輸入新變量的名稱,就像您在其自己的網站上看到的那樣 (單擊“計數”並選擇“重命名變量...”)。

問題是:Electron不支持window.prompt() ,如果我按Blockly.prompt代碼,它也不做任何事情,因此,經過一番搜索后,我了解到您可以重寫Blockly.prompt來使用您自己的代碼。 我的猜測:因此您可以使用window.prompt()的替代方法

我安裝了electron-prompt ,並試圖使用它在新的提示窗口中獲取用戶輸入,然后將其發送回處理重命名的Blockly核心功能。 這是我正在嘗試的:

var prompt = require('electron-prompt');
var setPrompt = function()
{ 
    return prompt
    ({
        title: 'Renaming',
        label: 'Renaming variable to:',
        type: 'input'
    })
};

var getPrompt = function()
{
    return setPrompt().then(function(value){return value})
}

var promptReturn = function()
{
    return getPrompt().then(function(value){return value})
}

Blockly.prompt = function(message, defaultValue, callback)
{
    callback(promptReturn().then(function(value){return value}));
};

編輯: electron-prompt源代碼在這里 ,通過查看它和我試圖從此處改編的信息,我更改為上面的代碼,推斷prompt 返回了諾言 但是,似乎Blockly.prompt中的callback不等待通過setPrompt()打開的模式的輸入,並引發錯誤,但是如果我使用簡單的函數只是在callback返回一個字符串,則它按預期工作。 。

現在我很困惑,如果是關於我自己仍然使用Promises錯誤還是Blockly.prompt中的callback不支持“等待諾言” ...

希望這有助於解釋在查找有關此問題的更多信息后嘗試使用的方法。

我設法解決了這個問題,我將其發布,以防有​​人需要有關Blockly.prompt覆蓋的明確答案。 看來callback覆蓋必須返回新變量的字符串時功能,所以我試圖用promise的首要之內,並調用一個簡單的函數只是適用的價值then()如下:

var prompt = require('electron-prompt');
var renameVar = function(name)
{
    return name;
}

Blockly.prompt = function(msg, defaultValue, callback)
{
    prompt
    ({
        title: 'Renaming',
        label: 'Renaming variable to:',
        type: 'input'
    }).then((name)=>{callback(renameVar(name))})
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM