我有一个设置,允许用户在常规 html 文本字段中键入命令。我处理文本字段上的 onkeypress 事件,检查它是否是已按下的回车键,然后解析并执行命令。
一个例子可能是:
deletefile /testfolder/testfile.html
代码看起来像这样:
inputControl.onkeypress = function(e) {
if (e.which == 13) {
var outputMessage = commandHandler.executeCommand(inputControl.value);
printOutputToScreen(outputMessage);
inputControl.value = "";
inputControl.focus();
}
}
(顺便说一句,这不是我的代码实际的样子,这只是一个例子)
这里的想法是能够编写命令,查看输出,编写另一个命令,查看输出等。
executeCommand 解析命令字符串并使用适当的参数调用特定命令。
> deletefile /test1.html
The file was deleted
> deletefile /test2.html
An error occured while trying to delete the file
这部分很简单。我需要帮助的是:如果用户只是键入“deletefile”,我希望能够询问用户(使用输出区域)“您要删除哪个文件?”。
我知道我可以这样做:
var additionalInput = prompt("Which file?");
,但我不想使用提示。
忘记我人为的例子,有没有人知道在javascript中间询问用户输入的好方法(不使用提示),比如:
var status = doSomeStuff(args);
if (status.fail) {
tmp = getUserInput();
doSomeFinalStuffBasedOnTheUserInput(tmp);
}
这甚至可能吗?
我不确定我能否在这里解释自己,但如果有人觉得他们可以以某种方式帮助我,请告诉我:-)
一种解决方案可能是实现一个全局状态变量,并将其用作 keypress-eventhandler 中的一种机制,以将输入路由到命令,例如:
inputControl.onkeypress = function(e) {
if (e.which == 13) {
if (state.additionalInputPending && currentCommand != null) {
currentCommand.executeWithAdditionalInput();
} else {
// perform regular command execution
}
}
}
这样,我的“应用程序”需要处理内部状态变量,并在按键之间存储 currentCommand。