Home

Awesome

jquery-console

A terminal emulator for making command consoles written in JavaScript with jQuery.

See LICENSE for the license.

Example

For a list of examples, see the demo file, and for a live demo, see live demo on my home page.

Simple example:

var container = $('<div class="console">');
$('body').append(container);
var controller = container.console({
  promptLabel: 'Demo> ',
  commandValidate:function(line){
    if (line == "") return false;
    else return true;
  },
  commandHandle:function(line){
      return [{msg:"=> [12,42]",
               className:"jquery-console-message-value"},
              {msg:":: [a]",
               className:"jquery-console-message-type"}]
  },
  autofocus:true,
  animateScroll:true,
  promptHistory:true,
  charInsertTrigger:function(keycode,line){
     // Let you type until you press a-z
     // Never allow zero.
     return !line.match(/[a-z]+/) && keycode != '0'.charCodeAt(0);
  }
});

Some CSS for your console:

div.console { font-size: 14px }
div.console div.jquery-console-inner
 { width:900px; height:200px; background:#333; padding:0.5em;
   overflow:auto }
div.console div.jquery-console-prompt-box
 { color:#fff; font-family:monospace; }
div.console div.jquery-console-focus span.jquery-console-cursor
 { background:#fefefe; color:#333; font-weight:bold }
div.console div.jquery-console-message-error
 { color:#ef0505; font-family:sans-serif; font-weight:bold;
   padding:0.1em; }
div.console div.jquery-console-message-value
 { color:#1ad027; font-family:monospace;
   padding:0.1em; }
div.console div.jquery-console-message-type
 { color:#52666f; font-family:monospace;
   padding:0.1em; }
div.console span.jquery-console-prompt-label { font-weight:bold }

Usage options

Here are options which can be passed to console:

OptionTypeDescription
autofocusboolAutofocus the terminal, rather than having to click on it.
promptHistoryboolProvide history support (kind of crappy, needs doing properly.)
historyPreserveColumnboolPreserve the column you were one when switching between history.
welcomeMessagestringJust a first message to display on the terminal.
promptLabelstringPrompt string like 'JavaScript> '.
colsintegerThe number of cols, this value is only used by the command completion to format the list of results.
commandValidatefunctionWhen user hits return, validate whether to trigger commandHandle and re-prompt.
commandHandlefunctionHandle the command line, return a string, boolean, or list of {msg:"foo",className:"my-css-class"}. commandHandle(line,report) is called. Report function is for you to report a result of the command asynchronously.
completeHandlefunctionHandle the command completion when the tab key is pressed. It returns a list of string completion suffixes.
completeIssuerfunctionHandle the command completion when the tab key is pressed. It differs from 'completeHandle'. 'completeIssuer' will just trigger the calculation for completion, and the result is returned asynchronously, after which the controller's 'showCompletion(promptText, completions)' can be invoked with the result. 'completeHandle' will retrieve the result synchronously, and show the result. If 'completeHandle' exists, 'completeIssuer' is ignored. A typical usage of 'completeIssuer' is that the completion is retrieved from the server using ajax or WebSocket asynchronously.
animateScrollboolWhether to animate the scroll to top. Currently disabled.
charInsertTriggerfunctionPredicate for whether to allow character insertion. charInsertTrigger(char,line) is called.
cancelHandlefunctionHandle a user-signaled interrupt.
fadeOnResetboolWhether to trigger a fade in/out when the console is reset. Defaults to true.

Uses in the wild