[英]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.