【问题标题】:Javascript Console Application?Javascript 控制台应用程序?
【发布时间】:2012-06-15 14:29:03
【问题描述】:

是否可以在 JS 中制作基于控制台的应用程序?
我现在可以实现的所有这些。 我希望有一个基于浏览器控制台的应用程序,而不是弹出提示:P

var fname=prompt("Command:","")
if (fname=="do_stuff") {alert("Ok, i will do stuff...")}
else {alert("You did not tell me something i know!")}; 


在我上面编写的 Javascript 程序中:首先有一个 prompt 框,然后是 是一个if 语句,用于检查用户是否输入了“do_stuff”,如果他没有输入。(“else”)然后它会显示一个警告框:你没有告诉我我知道的事情!

【问题讨论】:

    标签: javascript html console


    【解决方案1】:

    简短回答:您可以使用 JavaScript做任何事情。这是一个示例控制台,它接受一个命令,后跟一组以空格分隔的参数,类似于许多 Windows 命令行操作。

    您似乎对 JavaScript 很陌生,您应该学习了解它如何与核心浏览器一起工作……但我不知道您将使用什么浏览器,所以我的示例使用YUI 框架,因此我的代码不会因浏览器规范化而混乱。

    尝试将以下内容保存为 HTML 文档。然后,当您在浏览器中打开它时,尝试“do_stuff arg1 George 9 howdy”或“greet Navweb”。我希望您可以通过检查代码来弄清楚发生了什么。恐怕我没有时间放入合适的 cmets。

    <!doctype html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
            <title>Console</title>
            <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.5.0/build/cssreset/cssreset-min.css"/>
            <style type="text/css">
                html {
                    background-color: #000;
                    }
                body {
                    font-family: "Lucida Console";
                    font-size: 13px;
                    color: #0f0;
                    }
                #in {
                    display: block;
                    position: fixed;
                    left: 0;
                    bottom: 0;
                    width: 100%;
                    padding: 8px;
                    border-color: #fff;
                    border-width: 1px 0 0 0;
                    background-color: #000;
                    color: #0f0;
                    }
            </style>
        </head>
        <body>
            <div id="out"></div>
            <input id="in" tabindex="0"/>
        </body>
        <script type="text/javascript" src="http://yui.yahooapis.com/combo?3.5.0/build/yui/yui-min.js"></script>
        <script type="text/javascript">
            YUI().use("node", function(Y) {
    
                var COMMANDS = [
                    {
                        name: "do_stuff",
                        handler: doStuff
                    },
    
                    {
                        name: "greet",
                        handler: function(args) {
                            outputToConsole("Hello " + args[0] + ", welcome to Console.");
                        }
                    }
                ];
    
                function processCommand() {
                    var inField = Y.one("#in");
                    var input = inField.get("value");
                    var parts = input.replace(/\s+/g, " ").split(" ");
                    var command = parts[0];
                    var args = parts.length > 1 ? parts.slice(1, parts.length) : [];
    
                    inField.set("value", "");
    
                    for (var i = 0; i < COMMANDS.length; i++) {
                        if (command === COMMANDS[i].name) {
                            COMMANDS[i].handler(args);
                            return;
                        }
                    }
    
                    outputToConsole("Unsupported Command: " + command);
                }
    
                function doStuff(args) {
                    outputToConsole("I'll just echo the args: " + args);
                }
    
                function outputToConsole(text) {
                    var p = Y.Node.create("<p>" + text + "</p>");
                    Y.one("#out").append(p);
                    p.scrollIntoView();
                }
    
                Y.on("domready", function(e) {
                    Y.one("body").setStyle("paddingBottom", Y.one("#in").get("offsetHeight"));
                    Y.one("#in").on("keydown", function(e) {
                        if (e.charCode === 13) {
                            processCommand();
                        }
                    });
                });
            });
        </script>
    </html>
    

    【讨论】:

    • 不。我只是想我会给你一个看起来/感觉/功能有点像 DOS 的控制台。我相信您可以完全删除 CSS 并且仍然可以使用它。
    • 我也意识到你的命令是区分大小写的,那么有没有办法让它不区分大小写?例如 - 如果我输入:do_stuff;我也可以输入:dO_StUfF
    • 当然。只需根据您希望的处理方式将.toLowerCase() 添加到processCommand() 函数的适当部分即可。
    • 是否可以更改,以便在主窗口中输入输入(就像在标准控制台中一样?)
    【解决方案2】:

    最简单、最兼容的方法是使用众多 Javascript 终端仿真器库之一,例如 termlibjqueryterminal

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 2019-01-24
      相关资源
      最近更新 更多