2012-06-12 15 views
8

Czy można utworzyć aplikację opartą na konsoli w JS?
Ten rodzaj wszystkiego, co mogę teraz osiągnąć. Miałem nadzieję na zastosowaniu zamiast wierszu popup w przeglądarce konsola: PAplikacja konsoli Java?

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


W programie JavaScript Mam składa się powyżej: jest pierwsza skrzynka prompt potem jest if oświadczenie sprawdź, czy użytkownik wpisał "do_stuff", jeśli tego nie zrobił .. ("else"), to wyświetli pole alertu: Nie powiedziałeś mi nic, co wiem!

Odpowiedz

8

Krótka odpowiedź: można zrobić czegokolwiek użyciu JavaScript. Oto przykładowa konsola, która pobiera komendę, po której następuje zbiór argumentów rozdzielanych spacjami, podobnie jak wiele akcji wiersza poleceń systemu Windows.

Wygląda na to, że jesteś bardzo początkującym użytkownikiem JavaScript i powinieneś nauczyć się, jak to działa z przeglądarką w jej rdzeniu ... ale nie wiem, której przeglądarki używasz, więc mój przykład używa struktury YUI, więc mój kod nie jest zagracony z normalizacją przeglądarki.

Spróbuj zapisać następujące elementy jako dokument HTML. Następnie, gdy otworzysz go w przeglądarce, spróbuj "do_stuff arg1 George 9 howdy" lub "pozdrów Navweb". Mam nadzieję, że możesz dowiedzieć się, co się dzieje, sprawdzając kod. Obawiam się, że nie miałem czasu, aby umieścić odpowiednie komentarze.

<!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> 
+0

Hmmm .... Widzę, że użyłeś tutaj trochę CSS, czy to naprawdę potrzebne? – Navweb

+0

Nie. Po prostu pomyślałem, że dam ci konsolę, która wygląda/czuje się/działa jak DOS. Wierzę, że możesz całkowicie usunąć CSS i nadal go używać. – Brendan

+0

Zdaję sobie również sprawę, że twoje komendy są rozróżniane na podstawie wielkości liter, więc czy istnieje sposób, aby sprawić, by było ono nieadekwatne? Na przykład - gdybym wszedł: "do_stuff"; Mogę również wpisać: 'dO_StUfF' – Navweb

Powiązane problemy