jQuery命令行解释器插件 终端仿真器

  • 源码大小:1.06MB
  • 所需积分:1积分
  • 源码编号:19JP-3198
  • 浏览次数:290次
  • 最后更新:2023年05月17日
  • 所属栏目:文本
我要下载
加入收藏
本站默认解压密码:19jp.com 或 19jp_com

简介

一个简单的基于jQuery的终端模拟器,可以轻松地为您的网站或web应用程序创建命令行解释器。

命令行解释器是某类程序的总称,用于读取用户输入的文本行,从而实现命令行界面。(关于WIKI上的命令行解释器的更多信息)

根据GNU LGPL第3版许可证授权。

您可能还喜欢:

  • JavaScript和jQuery中的10个最佳终端模拟器

主要特点:

  • 自动调用JSON-RPC服务。
  • 您可以提供自己的函数,在该函数中可以解析用户命令。
  • 支持命令树
  • 支持命令行历史记录
  • 支持制表符完成
  • 支持键盘快捷键,如CTRL+A、CTRL+D、CTRL+E等
  • 支持身份验证
  • 在一个页面上支持多个命令行解释器

安装:

# NPM
$ npm install jquery.terminal

# Bower
$ bower install jquery.terminal

基本用法:

1.在您的页面上包括jQuery JavaScript库和终端模拟器插件的文件。

<link href="css/jquery.terminal.min.css" rel="stylesheet" />
<script src="/path/to/cdn/jquery.min.js"></script>
<script src="js/jquery.terminal.min.js"></script>

2.或者来自CDN。

<link href="https://unpkg.com/jquery.terminal/css/jquery.terminal.min.css" rel="stylesheet" />
<script src="https://unpkg.com/jquery.terminal/js/jquery.terminal.min.js"></script>

3.包含鼠标滚轮插件以支持鼠标滚轮(适用于传统浏览器)。

<script src="/path/to/jquery.mousewheel-min.js"></script>

4.包括用于传统浏览器的可选polyfill。

<script src="https://unpkg.com/[email protected]/keyboard.js"></script>

5.根据您的需要包括可选的扩展。

  • 动画.js:动画基类
  • ascii_table.js: 呈现简单的ascii表,如mysql-cli工具中的表
  • autocomplete_menu.js: 在终端中创建自动完成菜单
  • dterm.js:终端的jQuery UI对话框扩展
  • echo_newline.js:为终端内的回显方法添加换行选项
  • 表情.js:添加对表情符号的支持
  • 表格.js:创建交互式表单
  • less.js:在终端中创建类似命令
  • 管道.js:添加管道操作符并重定向到命令
  • 棱镜:与Prism JS一起使用的格式化程序
  • unix_formatting.js格式:将UNIX ANSI转义转换为终端并将其显示为html
  • xml_formatting.js格式:允许使用类似xml的语法和颜色作为标记
<script src="js/animation.js"></script>
<script src="js/ascii_table.js"></script>
<script src="js/autocomplete_menu.js"></script>
<script src="js/dterm.js"></script>
<script src="js/echo_newline.js"></script>
<script src="js/emoji.js"></script>
<script src="js/forms.js"></script>
<script src="js/less.js"></script>
<script src="js/pipe.js"></script>
<script src="js/prism.js"></script>
<script src="js/unix_formatting.js"></script>
<script src="js/xml_formatting.js"></script>

6.为终端创建一个元素,并使用以下JS代码生成一个基本终端。

<div id="example"></div>
jQuery(function($, undefined) {
  $('#example').terminal(function(command) {
      if (command !== '') {
          try {
              var result = window.eval(command);
              if (result !== undefined) {
                  this.echo(new String(result));
              }
          } catch(e) {
              this.error(new String(e));
          }
      } else {
         this.echo('');
      }
  }, {
     // options here
  });
});

7.使用以下选项和回调来配置终端。

// you can set it to string or function with one parameter which is callback that must be called with string for your prompt (you can use ajax call to get prompt from the server
prompt: '> ',

// whether or not to store commands
history: true,

// if this option is set to false it don't use CTRL+D to exit from terminal and don't include 'exit' command
exit: true,

// whether or not to include 'clear' command
clear: true,

// enable/disable terminal
enabled: true,

// mask character
maskChar: '*',

// if set to false terminal will not wrap long lines (it can be overwritten by echo option)
wrap: true,

// if set to true it will check number of arguments in functions and in JSON-RPC if service return system.describe
checkArity: true,

// it will allow to display raw html
raw: false,

// tab index
tabindex: 1,

// enable using terminal and cmd methods in extended commands of echo
invokeMethods: false,

// executed instead of default print exception on terminal.
exceptionHandler: null,

// if set to false keypress, keydown and keymap will be executed when terminal is paused
pauseEvents: true,

// if set to true it will not hide command line when paused, usefull if you want to have progress animation using propmt
softPause: false,

mousewheel: null,
touchscroll: null,

// use localStorage nor Cookies and save everything in memory only
memory: false,

// cancelable AJAX requests
cancelableAjax: true,

// if set to true it will process arguments when using an object (replace regex with real regex object number with numbers and process escape characters in double quoted strings - like \x1b \033 will be Escape for ANSI codes) - default true
// if you pass function you can parse command line by yourself - it have one argument with string without name of the function and you need to return an array.
processArguments: true,

// whether or not to set noreferrer on links
linksNoReferrer: false,

// enable to enter links other than ftp or http(s) in echo
anyLinks: false,

// add nofolllow attribute to links
linksNoFollow: false,

// callback function that will be use with any result returned by JSON-RPC. So you can create better handler
processRPCResponse: null,

// 
completionEscape: true,

// convert urls to tags
convertLinks: true,

// if set to true it will delete word when you hold key that should delete character e.g. delete or backspace key
mobileDelete: true,

// properties of this object are added to main interpreter 
extra: {},

// tab size
tabs: 4,

// size of the history
historySize: 60,

// whether or not to record all commands in url hash.
historyState: false,

// 
scrollObject: null,

// whether or not to import history in import_view exported by export_view
importHistory: false,

// if you return false in this function command will not be added into history.
historyFilter: null,

// if set to false terminal will not echo command you enter with prompt
echoCommand: true,

// indicate if terminals should scroll to bottom on echo or flush
// if set to false it will scroll to bottom if terminal was at the bottom
scrollOnEcho: true,

// used if you want to distinguish two or more terminals on one page or on one server
// if name them differently they will have different history and authentication
name: '',

// fixed number of rows and cols
numChars: null,
numRows: null,

// can be function, string or boolean. 
// Function must have 3 arguments login password and callback which must be called with token (if login and password match) or falsy value (if authentication fail). 
// If interpreter is string with valid URI JSON-RPC service you can set login option to true (it will use login remote method) or name of RPC method. this in login function is terminal object.
login: null,

// If non negative it will limit the printing lines on terminal. 
If set to 0 it will print only lines that fit on one page (it will not create scrollbar if it's enabled). 
outputLimit: -1,

// formatters
formatters: [$.terminal.nested_formatting],

// unix formatting API options
unixFormatting: {
  escapeBrackets: false,
  ansiParser: {},
  ansiArt: false
},

// enable image paste
pasteImage: true,

// indicate offset from bottom in which terminal will consider at bottom of the terminal
scrollBottomOffset: 20,

// if set to false it will autocomplete whole command before cursor, default set to true to autocomplete only word.
wordAutocomplete: true,
caseSensitiveAutocomplete: true,
caseSensitiveSearch: true,

// timeout in milliseconds
clickTimeout: 200,
holdTimeout: 400,
holdRepeatTimeout: 200,

// e.g. ['HOLD+BACKSPACE']
repeatTimeoutKeys: [],

mobileIngoreAutoSpace: [],

// function executed when you press tab twice and there are more then one completion. 
// The function have 3 arguments completing string, array of completions and echo_command function. 
// If you pass false it will disable double tab.
doubleTab: null,

doubleTabEchoCommand: false,

// function with a callback that need to be executed with list of commands for tab completion (you need to pass array of commands to callback function)
// you can also use true (it will take completion from object or RPC, if it have system.describe, as interpreter) or array if you know what your commands are and don't need to call ajax to get them
completion: false,

// object where keys are uppercase shortcuts like CTRL+ALT+C and value is function execute on that shortcut
// the order of modifiers is CTRL, META, SHIFT, ALT
keymap: {},

request: $.noop, // parameters: jxhr, terminal, request
response: $.noop, // parameters: jxhr, terminal, response
processRPCResponse: null,
// It should be dot separated string that point to filed that have list of procedures, if you have normal JSON-RPC method you can use "result" or "result.procs". 
// It can be empty string it that case response will be taken as array of procedures. If the value is set to false it will not call system.describe method,
describe: 'procs',
keypress: $.noop,
keydown: $.noop,

// allowed attributes
allowedAttributes: ['title', /^aria-/, 'id', /^data-/],

// custom render handler
renderHandler: null,

// callbacks
onAfterCommand: $.noop, // parameter: command
onAfterLogout: $.noop, 
onAjaxError: null, // parameters: xhr, status, error
onBeforeCommand: $.noop, // parameter: command
onBeforeLogin: $.noop, , // parameter: terminal
onBeforeLogout: $.noop, 
onBeforeLogin: null,
onAfterLoginL null,
onBeforeEcho: null,
onAfterEcho: null,
onCommandNotFound: $.noop, // parameters: command, terminal
onInit: $.noop, // parameter: terminal
onClear: $.noop,
onBlur: $.noop,
onPause: $.noop,
onFocus: $.noop, // parameter: terminal
onTerminalChange: $.noop,
onExit: $.noop, // parameter: command
onResize: $.noop, // parameter: terminal
onResume: $.noop,
onExport: $.noop,
onImport: $.noop,
onPush: $.noop,
onPop: $.noop,
onRPCError: null,
onAfterRedraw: $.noop,
onEchoCommand: $.noop,
onCommandChange: null, // parameters: command, terminal
onPositionChange: null, // parameters: command, terminal
onFlush: $.noop,

// custom strings
strings: {
  comletionParameters: 'From version 1.0.0 completion function need to' +
      ' have two arguments',
  wrongPasswordTryAgain: 'Wrong password try again!',
  wrongPassword: 'Wrong password!',
  ajaxAbortError: 'Error while aborting ajax call!',
  wrongArity: "Wrong number of arguments. Function '%s' expects %s got" +
      ' %s!',
  commandNotFound: "Command '%s' Not Found!",
  oneRPCWithIgnore: 'You can use only one rpc with describe == false ' +
      'or rpc without system.describe',
  oneInterpreterFunction: "You can't use more than one function (rpc " +
      'without system.describe or with option describe == false count' +
       's as one)',
  loginFunctionMissing: "You didn't specify a login function",
  noTokenError: 'Access denied (no token)',
  serverResponse: 'Server responded',
  wrongGreetings: 'Wrong value of greetings parameter',
  notWhileLogin: "You can't call `%s' function while in login",
  loginIsNotAFunction: 'Authenticate must be a function',
  canExitError: "You can't exit from main interpreter",
  invalidCompletion: 'Invalid completion',
  invalidSelector: 'Sorry, but terminal said that you use invalid ' +
      'selector!',
  invalidTerminalId: 'Invalid Terminal ID',
  login: 'login',
  password: 'password',
  recursiveCall: 'Recursive call detected, skip',
  notAString: '%s function: argument is not a string',
  redrawError: 'Internal error, wrong position in cmd redraw',
  invalidStrings: 'Command %s have unclosed strings',
  defunctTerminal: "You can't call method on terminal that was destroyed"
}

6.API方法。

// autologin if you get username and token in other way, like in sysend event.
instance.autologin([username, token])

// gets the string before the cursor
instance.before_cursor([boolean])

// if you pass string it will set name of the command line (name is use for tracking command line history) or if you call without argument it will return name.
instance.name([string])

// clears the terminal
instance.clear()

// clears saved history state
instance.clear_history_state()

// returns instance of history object.
instance.history()

// sets command line (optional parameter is is set to true will not change cursor position)
instance.set(string, [bool])

// inserts string to command line in place of the cursor if second argument is set to true it will not change position of the cursor
instance.insert(string, [bool])

// returns current command.
instance.get()

// returns number of characters and number of lines of the terminal
instance.cols()
instance.rows()

// utomplete text based on array
instance.complete([array, options])

// sets or gets function that will be called when user hit enter.
instance.commands([function])

// destroy the plugin
instance.destroy()

// moves virtual cursor to specied position or relative to curent position if second argument is true
instance.display_position([number], [boolean])

// sets prompt to function or string
// if called without argument it will return current prompt
instance.prompt([string|function])

// sets or gets position of the cursor
instance.position([number])

// sets numbers of characters
instance.resize([number])

// if argument is true it will mask all typed characters with provided string
// if called without argument it will return current mask.
instance.mask([string]) 

// displays string on terminal
instance.echo([string|function], [options])

// enable/disable the terminal
instance.enable()
instance.disable()

// displayes error string
instance.error([string|function])

// displays exception with stack trace on terminal 
instance.exception(Error, [Label])

// Executes command that like you where type it into terminal (it will execute user defined function). 
// second argument is optional if set to true, it will not display prompt and command that you execute. 
// If you want to have proper timing of executed function when commands are asynchronous (use ajax) then you need to call pause and resume (make sure that you call pause before ajax call and resume as last in ajax response).
instance.exec([string, bool])

// return object that can be use to restore the view using import_view.
instance.export_view()

// if you echo using option flush: false (it will not display text immediately) then you can send that text to the terminal output using this function.
instance.flush()

// it will activate next terminal if argument is false or disable previous terminal and activate current one
instance.focus([bool])

// disable/enable terminal that can't be enabled by clicking on terminal, frozen check if terminal has been frozen by freeze command.
instance.freeze([boolean])/frozen()

// get current command
instance.get_command()

// return string contains whatever was print on terminal, if argument is set to true it will return raw lines data.
instance.get_output([boolean])

// get current prompt
instance.get_prompt()

// same as token().
get_token([boolean])

// return command line History object
instance.history()

// disable or enable history sate save in hash. You can create commads that will start or stop the recording of commands, the commands itself will not be recorded.
instance.history_state([boolean])

// restore the view of the terminal using object returned prevoiusly by export_view.
instance.import_view([view])

// insert text in cursor position.
instance.insert(string)

// invoke shortcut, terminal.invoke_key('CTRL+L') will clear terminal.
instance.invoke_key([string])

// return true if terminal scroll is at the bottom. It use scrollBottomOffset option to calculate how much from bottom it will consider at bottom.
instance.is_bottom()

// return index of last line that can be use with update method after you echo something and you lost the reference using -1
instance.last_index()

// return how deeply nested in interpreters you correctly in (It start from 1).
instance.level()

// Execute login function the same as login option but first argument need to be a function. 
// The function will be called with 3 arguments, user, password and a function that need to be called with truthy value that will be stored as token. 
// Each interpreter can have it's own login function (you will need call push function and then login. 
// The token will be stored localy, you can get it passing true to token function. 
// Second argument indicate if terminal should ask for login and password infinitely.
instance.login([function(user, password, callback), boolean])

// return login name which was use in authentication. This is set to null if there is no login option.
instance.login_name()

// if you use authentication it will logout from terminal. If you don't set login option this function will throw exception.
instance.logout()

// return name of the interpreter.
instance.name()

// if you have more then one terminal instance it will switch to next terminal (in order of creation) and return reference to that terminal.
instance.next() 

// If your command will take some time to compute (like in AJAX call) you can pause terminal (terminal will be disable and command line will be hidden) and resume it in AJAX response is called. (if you want proper timing when call exec on array of commands you need to use those functions). 
// From version 0.11.1 pause accept optional boolean argument that indicate if command line should be visible (this can be used with animation).
instance.pause([boolean])/resume()

// return true if terminal is paused.
instance.paused()

// remove current interpreter from the stack and run previous one.
instance.pop()

// return name that is used for localStorage keys, if argument is true it will return name of local interpreter (added by push() method).
instance.prefix_name([boolean])

// remove all local storage left by terminal. 
// It will act like logout because it will remove login and token from local storage but you will not be logout until you refresh the page.
instance.purge()

// Push next interpreter on the stack and call that interpreter. 
// First argument is new interpreter (the same as first argument to terminal). 
// The second argument is a list of options as folow:
// name — to distinguish interpreters using command line history.
// prompt — new prompt for this terminal.
// onExit — callback function called on Exit.
// onStart — callback function called on Start.
// keydown — interpreter keydown event.
// historyFilter — the same as in terminal in next version.
// completion — the same as in terminal.
// login — same as login main option or calling login method after push.
// keymap — same as keymap in terminal.
// mousewheel — interpreter based mousewheel handler.
// infiniteLogin — if set to true it will ask infinetly for username and password if login is set.
instance.push([string|function], {object}) 

// wrapper over push, it set prompt to string and wait for text from user then call user function with entered string. 
// The function also return a promise that can be used interchangeably with callback functions. from version 1.16.0 read disable history.
instance.read([string, success_fn, cancel_fn])

// reset the terminal
instance.reset()

// resize the terminal
instance.resize([width, height]

// save current state of the terminal and update the hash
// if second argument is true it will not update hash.
instance.save_state([command, boolean])

// scroll the terminal
instance.scroll([number])

// scroll the terminal to the bottom
instance.scroll_to_bottom()

// set command
instance.set_command(string)

// override the current interpreter.
instance.set_interpreter([interpreter, login])

// toogle mask of command line if argument is true it will use maskChar as mask.
instance.set_mask([bool|string])

// change the prompt
instance.set_prompt([string|function(callback)])

// set prompt
instance.set_prompt([string|function])

// update token
instance.set_token([string, boolean])

// return settings object
instance.settings()

// return JQuery Singature depending on size of terminal.
instance.signature()

// return token which was set in authentication process or by calling login function. 
// This is set to null if there is no login option. If you pass true as an argument you will have local token for the interpreter (created using push function) it will return null if that interpreter don't have token.
instance.token([boolean])

// update line with specified number with given string. The line number can be negative (-1 will change last line) the lines are indexed from 0.
instance.update(line, string);

// JSON-RPC requests
$.jrpc("rpc.php", 'mysql', [command], function(json) {
  term.echo(json.result);
});

更多示例:

  • JSON-RPC演示
  • 乘法解释器演示

更新日志:

v2.35.3版本(2023-02-07)

  • 错误修复

v2.35.2版本(2023-01-07)

  • 为NPM重新发布

v2.35.1版本(2022-12-24)

  • 修复移动Chrome和Firefox

v2.35.0版本(2022-12-13)

  • 将imagePause替换为externalPause
  • 为通用选择器(*或div)添加防弹解决方案以覆盖终端样式
  • 对表情符号使用jsDelivr,速度更快#810
  • 加载iframe#816时暂停终端
  • 允许更改或删除具有JSON属性的链接上的target和rel标记
  • 允许使用透明背景#698
  • 注册CSS属性,以便在终端颜色#808上使用CSS转换
  • 添加终端::模糊别名#813
  • 允许使用CSS属性更改滚动条颜色
  • 添加process_formatting静态辅助函数
  • 添加格式化CanvasRenderer用于颜色动画#819
  • 错误修复程序

v2.34.0版本(2022-07-11)

  • 添加术语::get_mask方法
  • 将onReady事件添加到术语::read
  • 提高键入动画的性能
  • 在主CSS中添加偏好减少的运动
  • 加载图像时暂停终端
  • 允许在继续时禁用滚动到底
  • 错误修复程序

v2.33.3版本(2022-05-21)

  • 修复缩小的js文件中的换行符

v2.33.2版本(2022-05-13)

  • 将滚动固定到底部

v2.33.1版本(2022-05-06)

  • 修复缩小程序删除的填充

v2.33.0版本(2022-05-04)

  • 在xml格式化程序中为字体标记添加颜色和背景属性
  • 添加终端无动画
  • 允许轻松更改终端上的边界半径
  • 将clear_cache添加到cmd
  • 错误修复

v2.32.1版本(2022-03-09)

  • 带echo+keepWords的前导空格
  • 固定加载隐藏终端

v2.32.0版本(2022-03-09)

  • 添加插入键入动画
  • add--文本阴影css变量
  • 新的API方法parse_formatting
  • 允许使用外部元素的端子样式
  • 错误修复

v2.31.1版本(2022-02-28)

  • 修复具有潜在更多安全隐患的低严重性self-XSS

v2.31.0 (2021-12-30)

  • 删除未记录的echo_command(旧的echo_newline扩展使用该命令)
  • 滚动到多行键入动画中每一行的底部
  • 允许在默认动画中使用--glow:1
  • 新的API终端::enter与echo_command相同,但支持动画
  • 添加全局选项execAnimationDelay默认值-100
  • 使execAnimation仅与execHash一起使用
  • 错误修复程序

v2.30.2 (2021-12-24)

  • 修复带有sync命令的动画exec数组

v2.30.1 (2021-12-15)

  • 修复URL哈希中的内置命令记录

v2.30.0 (2021-12-15)

  • 将span添加到xml格式
  • 允许在XML格式中使用class属性(span、link和img)
  • 新的API方法clear_buffer()和get_output_buffer
  • 错误修复

2.29.5版(2021-10-16)

  • 修复不包含wcwidth时的空提示

v2.29.4 (2021-10-02)

  • 修复打印单个多行字符串时的空行

v2.29.3 (2021-10-02)

  • 错误修复程序

v2.29.2 (2021-09-19)

  • 修复和改进以生成+修复构建

v2.29.1 (2021-08-24)

  • 删除所有:取消设置CSS,破坏了调整大小事件和文本区域的可见性

v2.29.0 (2021-08-22)

  • 删除未记录的<large>/<big>/<wide>,并将<font>标记添加到XML格式化程序
  • 将动画添加到exec和execAnimation选项
  • 在禁用的终端上调用invoke_key时添加警告
  • 如果解释器返回一个promise并且正在设置动画,那么终端将不会暂停(对于exec数组)
  • 允许在扩展命令中使用括号(例如,用于隐藏命令的JavaScript代码)
  • 公开$.terminal.xml格式标签
  • add—辉光条件破解
  • 错误修复程序

v2.28.1 (2021-08-04)

  • 修复了错误

v2.28.0 (2021-08-04)

  • 添加表单扩展
  • 重写xml_formatter并添加新标记
  • 添加动画界面
  • 使用破折号作为输入文件从ansi可执行文件中的STDIN读取
  • 改进身份验证错误消息
  • 添加带有前缀提示的“输入”键入动画
  • 允许以不太正确的方式呈现ansi(使用ansi选项)
  • nested_formating默认情况下继承样式
  • 错误修复

v2.27.1 (2021-07-07)

  • 修复from_ansi并添加选项--ansi-a

v2.27.0 (2021-07-06)

  • 将CSS和选项ansi添加到echo以正确渲染ansi艺术
  • 将键入动画添加到set_prompt
  • 使用键入动画时,从set_prompt和echo返回promise
  • 新表情符号

v2.26.0 (2021-07-04)

  • 更好的API,可以使用term::read和term::echo提示键入动画
  • 错误修复程序

v2.25.1 (2021-06-01)

  • 修复使用exec登录时错误的身份验证令牌
  • 修复异步登录的exec数组
  • 修复了在没有system.describe的情况下对嵌套RPC解释器进行身份验证的问题
  • 不要从RPC中回显虚假值

v2.25.0 (2021-05-31)

  • 为JSON-rpc请求添加新的API$.rpc
  • 错误修复

v2.24.0 (2021-05-30)

  • 添加终端::键入API方法
  • add--字体自定义属性
  • 从格式中将alt标记添加到图像
  • 改进命令解析器
  • 修复了带有promise的echo的TypeScript类型

v2.23.1 (2021-04-23)

  • 将不带换行符的echo包含到库的核心中
  • 删除破坏CSP的不安全eval(函数构造函数)
  • 修复提示为空字符串时的向上/向下箭头
  • 修复包含括号的提示
  • 修复ANSI艺术(使用ANSI转义码添加保存和恢复光标)
  • 当内容小于终端高度时,修复鼠标滚轮和触摸滚动
  • 右键单击修复复制/粘贴中的回归

v2.23.1 (2021-04-22)

  • 修复cmd中的反向类(例如在less命令中)
  • 修复了在Firefox中从

v2.23.0 (2021-04-18)

  • 将不带换行符的echo包含到库的核心中
  • 错误修复

2.22.0版(2021-02-14)

  • 使unix格式和基本工具在web worker中工作
  • 修正了使用鼠标滚轮时滚动整个页面的问题
  • 修复ANSI Art中缺少的一些cp_437字符
  • 修复了在StackOverflow上用作bookmarklet的问题(强制使用文本区域的css)

v2.21.0 (2021-02-04)

  • 将换行和keepWords选项添加到较少
  • 将新方法几何添加到API
  • 修复在字符串中解析JSON代码的问题

v2.20.2 (2021-01-20)

  • 修复Unix格式中的粗体背景和默认颜色(另一个ANSI艺术作品问题)
  • 修复ANSI艺术中渲染0x1E的问题
  • 修复浏览器没有ES6 Map对象时的问题
  • 修复echo_newline扩展
  • 修复ANSI艺术中闪烁的处理
  • 修复在没有选项和渲染标志(例如:echo或prompt)的情况下调用时棱镜中的错误
  • 修复已使用格式设置背景的链接的背景色
  • 修复复制/粘贴时Windows上的空光标

v2.20.1版本(2020-11-28)

  • 修复异步函数和正常回显的异步同步
  • 修复使用管道执行空命令时的异常
  • 修复了使用管道运算符和函数解释器时命令的序列化问题
  • 修复终端中的异常::destroy

v2.20.0版本(2020-11-27)

  • set_interpreter返回promise而不是终端实例
  • 添加对echo-async函数的支持
  • 允许使用将使用管道的onInit运行exec
  • 修复从hash执行空命令时的静默错误
  • 修复不支持css变量的浏览器问题
  • 修复格式化程序中IE中的异常

v2.19.1/2版本(2020-11-02)

  • 固定棱镜高亮显示

v2.19.0版本(2020-11-02)

  • 添加支持闪烁ANSI转义(unix_formatting)
  • 新的unix格式化API选项,ansiArt选项更改闪烁行为
  • 错误修复

v2.18.3版本(2020-08-31)

  • 修复移动设备上跳转到光标位置的问题(带代码)

v2.18.2版本(2020-08-25)

  • 修复页面在正文上使用行高的问题
  • 修复历史导航中的故障(在历史中使用多行命令时可见)

v2.18.0版本(2020-08-22)

  • 使用renderHandler更新的新API
  • 新的API(apply_formatters函数选项)用于选择格式处理的工作位置
  • 允许在棱镜中切换格式化程序(默认情况下仅对回声和命令启用)
  • escape_formating/escape_parameters中的转义斜杠
  • 添加对rgb(a)和hsl(a)颜色的支持
  • 统一Firefox和Webkit(chrome)自定义滚动条
  • 已修复Bug

v2.17.6版本(2020-07-14)

  • 修复添加重复棱镜格式化程序的问题
  • 修复了使用Windows 10表情符号选择器插入表情符号的问题
  • 修复多行命令中文本区域的位置(可能会影响IME或表情符号选择器)
  • 只有在终端未启用时,点击时才能跳到底
  • 修复了没有终端的init cmd插件
  • 修复Firefox中的下划线截断(在签名中可见)
  • 修复组合的表情符号字符和肤色变化
  • 固定光标位于虚线末端时的向下箭头

v2.17.5版本(2020-07-05)

  • 修复从split_equal吃最后一个括号的问题
  • 修复误报递归回波错误

v2.17.3/4版本(2020-07-01)

  • 修正了在终端未全屏时右键单击底部和/或右边缘时跳转的问题
  • 修复鼠标右键单击时的双重事件触发
  • 修复Chrome中的滚动条大小
  • 已修复字体系列通配符css规则
  • 将光标固定在滚动条上
  • 修复不带格式的宽字符损坏的html
  • 修复在CTRL+L上跳到地址栏的问题
  • 修复了仅渲染一个图像时较少出现的问题
  • 修复了当终端内容向下滚动时在移动设备上跳转焦点的问题
  • 修复检测到iPad iOS 13作为移动设备的问题
  • 修复了onPaste返回false以禁用从剪贴板插入的问题
  • 修复了less插件命令模式下的粘贴
  • 修复在底部和/或右侧边缘附近单击时跳跃的问题

v2.17.2版本(2020-06-12)

  • 将光标固定在棱镜中的字符串上

v2.17.1版本(2020-06-01)

  • 修复文本选择、光标和CSS变量中的回归
  • 统一选择字体图标(fontawesome)和表情符号

v2.16.1版本(2020-05-23)

  • 修复在多行CMD中使用上下箭头时光标消失的问题
  • 修复损坏的颜色CSS变量
  • 将吞下的逃生支架固定为CMD中的输入

v2.16.0版本(2020-05-16)

  • WebKit中滚动条的样式
  • 与使用格式添加的字体图标集成
  • 错误修复

v2.15.4版本(2020-04-18)

  • 修复向下滚动div终端时跳转的问题

v2.15.3版本(2020-04-17)

  • 修复处理方括号时prism.js中损坏的格式

v2.15.2版本(2020-03-21)

  • 修复同一页面上多个终端上的切换键盘
  • 修正了当终端滚动到顶部时按CTRL+C时跳转到提示的问题
  • 点击已经聚焦的终端时不要滚动到底部

v2.15.1版本(2020-03-16)

  • 为手机添加新的API事件触摸屏(使用更少)
  • 流动糊剂
  • cmd::clip内部使用的API方法,主要用于移动设备
  • 已修复Bug

v2.14.1版本(2020-02-24)

  • 固定空行大小

v2.14.0版本(2020-02-18)

  • 允许从renderHandler返回promise
  • 允许以unix_formation扩展ansiParser
  • 添加处理Sixel终端图像格式的方法
  • 提高移动光标时cmd渲染的性能
  • 机具H光标移动#553
  • Unix格式化ANSI字符替换模式
  • Bugfixed(错误修复)

v2.12.0版本(2019-12-23)

  • 提高性能
  • 添加用于格式化和处理行的缓存
  • 大幅改进了较少的插件重新渲染(例如,当使用键盘滚动文本时)
  • unix格式中的光标移动(cmd中不支持虚拟光标,因为它没有意义)
  • 在较少的时间内修复空行
  • 修复split_equal,并在末尾保留作品和格式。
  • 修复在较少时间内搜索链接

v2.10.1版本(2019-12-23)

  • 修复没有格式时提示的光晕效果
  • 修复echo中的exec命令
  • 修复末尾带有换行符和括号的回显格式
  • 修复单个宽字符异常
  • 当字符串末尾有括号时,将子字符串固定在字符串之后
  • 修复cmd中格式化程序的图像和样式

v2.10.0版本(2019-12-19)

  • 通过添加函数$.terminal.partition提高性能
  • 允许使用force resize cmd::resize(true)(使用表情符号更新init命令行)
  • 添加光晕样式
  • 错误修复

v2.9.0版本(2019-08-30)

  • 允许从问候功能返回承诺
  • 调用清除前清除并允许取消
  • 新建renderHandler选项
  • 允许回显DOM节点和jQuery对象
  • 处理终端中的损坏图像和更少的图像(分别为svg和错误消息)
  • 当运行次数较少时,终端具有无终端类
  • 管道扩展monkey-patch终端类似echo newline,它允许使用标准解释器(旧的API工作原理相同)。
  • 错误修复

v2.8.0版本(2019-08-30)

  • BeforeLogin、onAfterLogin、onBeforeEcho和onAfterEcho上的新事件
  • 嵌套格式化程序中的样式的继承(嵌套格式化时带有标志__inherit__=true)
  • 图像格式化
  • 新的echo_command API方法(用于echo_newline默认操作)
  • 移动删除默认禁用+选项切换
  • 修复表情符号
  • 修复使用棱镜格式化程序嵌套的问题

v2.7.1版本(2019-08-14)

  • 通过在终端中键入来修复调用方法
  • 将echo与exec一起使用时不要删除扩展命令:false

v2.7.0版本(2019-08-11)

  • 所有类都以命令or航空站除了代币(PrimsJS内部)和表情符号(这可能是修复一些错误的功能,也可能会破坏用户代码,但它是内部html结构,没有作为API文档记录)
  • 修复IE和Edge中的空间问题#507
  • 修复了多个括号转义问题

v2.6.3版本(2019-06-03)

  • 修复无按键时的移动按键调用问题(Android)
  • 修复了使用下划线调整大小的问题

v2.6.2版本(2019-06-03)

  • 修复了当终端不在焦点上时CTRL+C的问题(只有当选择文本在终端内时,它才应该绕过启用标志)
  • 修复最后一行回显中的keepWord选项
  • 修复Prism中损坏的格式

v2.6.1版本(2019-05-27)

  • 修复源映射
  • 固定棱镜+-尺寸
  • 修复回声双斜线
  • 将选项转义为$.terminal.format(默认为true-相同行为)以修复以前的错误

v2.5.2版本(2019-05-18)

  • 固定选择单回波输出内部时的CTR+C
  • 修复Mac/Chrome上的粘贴+键

v2.5.1版本(2019-05-17)

  • 修复棱镜标记后选择样式中的1px黑色空格
  • 额外的验证,而不仅仅是在格式函数中抛出和捕获JSON错误(devtools改进)
  • 修复版本3.3.29的typescript类型并冻结该版本

v2.5.0版本(2019-05-08)

  • 更好的API选项doubleTabEchoCommand,所以您不需要在doubleTable中调用echo_command()函数。
  • 新API命令::column(boolean):number
  • 在多行命令中上下移动光标(类似于Chrome开发工具)
  • 修复了更多错误

v2.4.1版本(2019-04-19)

  • 修复了在最初不可见时调整大小后显示终端内容的问题(修复了文本的跳跃)
  • 修复在第一个命令中使用read+echo并在下一个命令中读取时的管道
  • 修复了按键时终端跳转的问题
  • 修正按键快速变化时的按住键(表现为在ALT+D上跳到地址栏)
  • 修复终端没有滚动条时的滚动页#484
  • 修复call.complete(['cd'])的问题;因为默认的“清除”(将代码移动到完整之外)
  • 修复突出显示的代码有括号时的Prism格式化程序
  • 修复了一些异步提示问题,包括

v2.4.0版本(2019-04-14)

  • 改进了渲染和导航较长命令行的性能
  • CTRL+C现在在cmd和终端输出中保留换行符(仅限现代浏览器)
  • 通过在echo中使用invokeMethods选项对服务器端调用进行更多控制
  • 当用户试图用换行符完成命令并且设置了单词complete时,向用户发出警告
  • 错误修复

v2.3.0版本(2019-04-06)

  • 添加实验性$.terminal.pipe函数
  • 允许从onPaste返回字符串(不仅仅是一个promise)
  • 添加CTRL+Home和CTRL+End键+Home和End将光标移动到行的末尾和开头
  • 使用鼠标滚轮+CTRL键时缩放页面(浏览器默认设置)
  • 允许使用筛选选项设置属性格式(以防止回声不受信任的文本造成不需要的onclick或其他属性)
  • 错误修复

v2.1.2版本(2019-02-10)

  • 错误修复

v2.1.1版本(2019-01-27)

  • 错误修复

v2.1.0版本(2019-01-21)

  • 光标辉光动画
  • 将invoke_key添加到cmd
  • onPaste事件
  • 将表情符号集成到终端
  • 修复命令具有&and;时的换行;但它不是实体
  • 修复使用id创建css样式时的换行问题
  • 修复了在bare cmd中计算init上的字符数的问题
  • fix.反转类
  • 固定所选内容的背景颜色(使用--color时)
  • 修复命令为空时隐藏的条形光标
  • 修复将终端输出复制到剪贴板(换行问题)
  • 删除选择行之间的奇怪空格
  • 修复带下划线动画的光标跳跃
  • 修复命令行的选择
  • 修复使用--color时的错误颜色
  • 修复ANSI艺术问题

v2.0.2版本(2018-12-23)

  • 修复序列5的unix格式中的ansi转义;1.47m修复了ANSI艺术的渲染
  • 修复从ASCII艺术中剪切下划线的问题
  • 修复了在GNU/Linux上的Codepen/Linux/Chromium中剪切ASCII艺术下划线的问题
  • 修复文本具有ascii_table时的问题\r
  • 修复回声中的棱镜高亮显示(终端规则比棱镜更强)

v2.0.1版本(2018-11-18)

  • 新选项repeatTimeoutKeys,默认值为HOLD+BACKSPACE,删除单词时应有延迟
  • 使用setTimeout而不是alert来显示可以在终端中显示的异常
  • 允许在regex格式化程序不更改字符串长度时移动光标
  • 如果链接没有href,则不要设置其样式
  • 新插件是FullyInViewport(注释中指向源代码的链接)
  • 滚动终端以始终在多行命令中查看光标
  • 将onPositionChange添加到端子的选项
  • 将tabindex选项添加到cmd和终端
  • 错误修复程序

v1.23.2(2018年10月21日)

  • 新选项和错误修复。

v1.23.2 (2018-09-19)

  • 修复光标过高的问题(闪烁包括下划线)

v1.23.1 (2018-09-18)

  • ES6迭代器帮助器,用于迭代处理格式、表情符号和额外字符的字符串
  • 错误修复程序

v1.22.7 (2018-09-14)

  • 修复命令行的选择
  • 修复命令行和光标位置中的问题
  • 修复棱镜修复后的下划线和条形动画
  • 禁用为cmd选择行中的最后一个人工字符
  • 修复背景上的光标动画以动态切换动画

v1.22.4 (2018-09-13)

  • 当光标位于下一行的标记上时,将光标固定在棱镜中
  • 反转css动画,以便在按住键时显示提示

v1.22.2 (2018-09-11)

  • 反转css动画,以便在按住键时显示提示
  • 持久函数提示在enable和init时不呈现
  • 当提示有多行时修复重复的行
  • iterate_formatting处理类似表情符号的子字符串和split_equal

v1.22.0 (2018-09-09)

  • 将源映射添加到min-js和css文件
  • 新选项holdRepeatTimeout-这是按住键时按键重复之间的延迟数
  • 根据Bash中的格式更改背景颜色的选择
  • 嵌入Mathias Bynens的表情符号正则表达式,以更好地检测表情符号
  • 允许从格式化程序执行扩展命令,包括终端和cmd方法
  • unix格式中对真彩色(24位)的支持
  • 在$.terminal命名空间中公开拆分字符
  • cmd命令选项函数将cmd作为此上下文
  • 错误修复程序

v1.12.0(2018年8月21日)

  • 添加选项invokeMethods,默认情况下禁用echo中的执行终端和cmd方法
  • HOLD键映射修饰符+HOLD+[SHIFT]+BACKSPACE/DELETE删除光标前后的单词
  • 像在unix终端中一样对齐选项卡
  • 选项卡端子选项更改选项卡长度,而不仅仅是列/阵列
  • cmd的添加选项卡选项
  • 提高display_position的性能(当您在改变长度的长命令中单击字符时)
  • Bugfix:修复方案棱镜格式中的&)
  • 错误修复:除了在反向搜索中输入之外,不处理密钥
  • Bugfix:修复Prismjs-css中的后台问题
  • Bugfix:在嵌套格式化之前插入棱镜语法格式化程序,因此如果unix_formatting包含它,它也适用于html
  • 错误修复:修复表情符号和Unicode代理项对

v1.20.5(2018年8月21日)

  • 错误修复

v1.20.2(2018年8月20日)

  • 在cmd中使用unix格式时转义格式
  • 将光标固定在链接上
  • 再固定一个光标位置

v1.19.1 (2018-07-24)

  • 修复类型定义以匹配@types/jquery中的类型
  • 修复带有循环选项的regex格式化程序中的无限循环

v1.19.0(2018年7月22日)

  • 添加TypeScript定义文件
  • 更新格式化程序API,以便在从函数格式化程序替换后返回位置
  • regex格式化程序和$.tracking_replace现在接受函数作为替换
  • 更新unix格式化程序以使用新的API,使其能够使用命令行
  • 如果未提供登录,则将exit设置为false
  • Bugfixed(错误修复)

v1.18.0 (2018-07-08)

  • 循环使用正则表达式格式化程序进行替换,直到它们与正则表达式不匹配为止
  • 将tracking_replace添加到$.terminal命名空间
  • $.terminal.syntax助手
  • 棱镜的新语言:处理html、javascript和css语法的“网站”
  • 错误修复

v1.17.0 (2018-07-02)

  • 在分隔文件中添加ascii_table实用程序
  • 每个用户的命令行历史记录
  • 添加$.terminal.parse_options,返回与yargs解析器相同的对象
  • $.jrpc-helper现在返回自己创建的promise,而不是$.ajax
  • 添加wcwidth作为依赖项,这样它将始终正确显示较宽的字符(在浏览器中与可选字符相同)
  • 在$.terminal命名空间中公开终端异常
  • 新的API选项doubleTab
  • 错误修复

v1.16.1 (2018-06-05)

  • 修复单击下面时粘贴/全选的问题。cmd
  • 第二个修复方法是右键单击时跳转(上下文菜单)
  • 将$.terminal.ism_formatting更改为$.terminate.ism

v1.16.0 (2018-06-03)

  • 允许在从JSON保存和恢复导出时进行有限的导入
  • 在解析命令时添加对新的u和s正则表达式标志的支持
  • 在牵引绳的基础上添加更少的插件
  • 支持从完成功能返回的承诺
  • 为PrismJS库添加包含monkey补丁的prism.js文件(用于语法高亮显示)以输出终端格式
  • 更好的阅读方法
  • 处理登录和异步登录函数返回的promise
  • 为推送添加历史记录选项,以便为新解释器轻松禁用历史记录
  • 添加scrollObject选项,这样您就可以在终端处于全屏div而没有高度时使用body
  • 修复Firefox中的resizer
  • 修复$.terminal.columns和echo数组
  • 修复了$.terminal.columns中较宽字符和终端格式的问题
  • 修复使用--size时的rows()
  • 修复JSON哈希中的null
  • 修复右键单击时跳转的问题(上下文菜单)
  • 修复括号内的格式
  • 修复异步解释器
  • 将终端添加到主体时使用窗口大小调整

v1.15.0(2018年5月13日)

  • 允许从扩展命令中调用终端和cmd方法([[terminal::set_prompt(“>>>”)]])
  • 新的API方法invoke_key允许调用快捷方式终端。invoke_ key('CTRL+L')将清除终端
  • shift+backspace现在做与backspace相同的事情
  • 错误修复

v1.14.0(2018年03月25日)

  • 将选项传递给格式化程序并接受unix_formatting中的选项unixFormattingEscapeBrackets
  • 提高在更改终端内容时重新绘制和布局整个页面的性能
  • 如果浏览器支持,则使用ch单位表示宽字符(它有广泛的支持,然后是css变量)
  • keymap终端方法,并允许在运行时设置快捷方式
  • 将换行符固定为格式中的第一个字符
  • 修复了未定义回显时的错误(由于已转换为字符串,它将回显未定义的字符串)
  • 修复keymap函数的第一个参数,现在是keypress事件
  • 修复了当您键入时滚动条出现/消失时调整大小的问题
  • 修复了当命令行有完整的行并且位于末尾时光标的剪切

v1.12.1(2018年3月10日)

  • 修复缩小的css文件+修复滚动条
  • 还原“修复标签中的字段”

v1.12.0(2018年03月03日)

  • cmd插件的默认选项
  • caseSensitiveSearch选项用于终端和cmd插件
  • 错误修复程序

v1.11.4(2018年1月28日)

  • 处理非字符串和函数时出错,与处理回显时相同
  • 修复原始输出的选择
  • 隐藏字体大小调整器,以便您可以从左上角开始选择文本

v1.11.2(2017年12月28日)

  • 修复了如果终端有显示,--char width=0的问题:none
  • 修复IE上的DELETE数字键盘键
  • 忽略system.describe中的无效过程描述
  • 修复终端初始隐藏时的字体大小调整器和初始化大小调整器
  • 修复了在调整大小时更新div的新功能中出现的换行错误

v1.11.1(2017年12月26日)

  • 修复numpad计算键的键属性中的IE不一致问题
  • 修复跳过字母的完成
  • 修复了行中最后一个字符为右括号的问题

v1.11.0 (2017-11-09)

  • update API方法接受选项第三个参数
  • 通过检查字体大小调整器中的字符大小来加快大小调整时的刷新速度(由@artursOs报告)
  • 更改resize+settings.numChars上的命令行num个字符(由@artursOs#353报告)
  • 添加remove-api方法来调用update(行,null);
  • 调整大小/刷新/更新/删除时不要调用滚动到底
  • 使用document.scrollingElement(如果存在)改进scroll_element插件并缓存值
  • resizer插件使用ResizeObserver(如果已定义)
  • 删除假调用以在echo中完成以捕获潜在错误
  • 静默布尔值cmd::set的第三个参数和terminal::set_command的第二个参数
  • 方便地分类以更改IE中的光标动画
  • 错误修复程序

v1.10.0 (2017-11-09)

  • 修正了禁用终端时滚动到底部的问题

v1.10.0 (2017-11-08)

  • 新的格式化程序api带有2个元素regex和替换字符串的数组(它修复了格式化程序更改字符串长度时的问题-表情符号演示)
  • normalize键映射的IE键属性+如果有任何控制键,则始终使用+SPACEBAR
  • 终端和命令的光标文本
  • onEchoCommand回调获取第二个参数命令
  • cmd键映射api函数,以及对象和无参数,接受字符串作为第一个参数,接受函数作为第二个参数
  • 每个回调事件只有一个异常
  • 选择所有上下文菜单(基于CodeMirror中的想法)
  • 错误修复

v1.9.0 (2017-10-10)

  • 新的api实用程序$.terminal.length和$.terminate.columns
  • echo数组(可在适合宽度的列中调整大小,使用settings.tables作为pad right)
  • 回调函数parseObject,在不同于字符串的对象上调用(在渲染时)
  • 使用numRows或numChars调用选项方法重新绘制终端输出(用于测试)
  • onFlush回调(当文本以flush方法呈现在屏幕上时调用)
  • 使用Symbols创建的regex helper$.terminal.formatter可以代替regex使用
  • 新选项pasteImage(默认为true)
  • CTRL+C取消命令,就像bash中没有选择一样
  • 刷新API方法
  • cmd插件中的新api方法display_position,如果光标位于格式化函数中被长字符串或短字符串替换的单词的中间,则返回光标的正确位置(修复了表情符号演示)

v1.8.0(2017年9月24日)

  • 允许从提示返回promise+修复echo中的promise
  • 添加回错误删除的上下文菜单粘贴
  • 使终端在数据URI中工作(对cookie的访问在Chrome中引发异常)
  • 修复存在单个完成时不区分大小写的自动完成
  • 修复多个完成时的完成错误
  • 修复人工触发的点击
  • 修复有多个终端时的焦点问题
  • 修复css动画
  • 修复单击时移动光标的问题
  • 修复快速点击焦点+CTRL+V
  • 修复输出限制
  • 修复mouseup上有时发生的异常

v1.7.2(2017年9月17日)

  • 修复当您单击的元素位于端子顶部时,单击端子时的模糊
  • 这是echo函数中的终端实例
  • 修复了从数据URI创建终端时出现的localStorage异常和空行高问题
  • 单击终端时重新聚焦(修复:聚焦于)

v1.6.4 (2017-08-31)

  • 建筑

v1.6.3 (2017-08-28)

  • 错误修复

v1.6.2 (2017-08-20)

  • 修复altGr+密钥问题

v1.6.1 (2017-08-15)

  • 不要在escape_formating中调用encode

v1.6.0 (2017-08-11)

  • 新API方法apply_formatters
  • 添加UMD(由@fazelfarajzade请求)
  • 添加新事件:onEchoCommand和onAfterRedraw

v1.5.3 (2017-08-01)

  • 将光标固定在实体上
  • 固定空间滚动页

v1.5.2 (2017-08-01)

  • 当光标位于某个位置时保持格式
  • 修复有换行符时的跳转提示

v1.5.1 (2017-07-29)

  • 使用位置固定自动对焦:固定
  • 修复windows上使用搜狗键盘的输入法
  • 修复换行并单击以使用更宽的字符(如中文)移动光标

v1.5.0 (2017-07-10)

  • 运行在浏览器未启动时在输入中创建的伪keypress和keydown(android)
  • 通过仅在调整大小和初始化时计算字符大小来提高性能(问题由@artursOs报告)
  • 添加到终端的新cmd委托方法get_position/set_position
  • 解析jQuery 2.x中从intrpeter返回的promise
  • 允许在提示中使用换行符
  • 设置exceptionHandler时不要重新引发用户异常(主要用于测试该选项)
  • add option description是一个字符串映射procs from system.describe procs(默认为“procs”)如果system.descratch是正常的JSON-RPC方法,则可以是“result”或“result.procs”
  • 将选项添加到cmd::disable以不模糊,这样它就不会在暂停时隐藏android键盘
  • 不要在安卓系统的init上启用终端
  • 修复CTRL+V之后触发输入事件的下一个键(由@artursOs报告)
  • 修复解析字符串
  • 调用pause()时不要隐藏Android上的虚拟键盘
  • 修复Firefox上使用谷歌键盘的输入问题(Filip Wieland报道)
  • cordova中的disable terminal on resume事件(当没有虚拟键盘时,终端是否被禁用)
  • 修复了单击时移动光标(在多行命令之后)和cmd插件的高度
  • 修复转义完成(默认情况下已启用)
  • 从json-rpc系统中删除硬编码的DemoService.describe

v1.4.3 (2017-06-18)

  • 禁用终端时不执行按键回调
  • 修复android(输入事件未绑定)
  • 当按下CTRL+键并且大写锁定打开时,禁用按键

v1.4.2 (2017-05-18)

  • 修复了在终端不在焦点时粘贴上下文菜单和粘贴图像的问题

v1.4.1 (2017-05-16)

  • 将rel=“noopener”添加到所有链接
  • 删除与同名参数重复的匿名函数名

v1.4 (2017-05-10)

  • 修复finalize echo函数抛出异常时的递归异常
  • 修复下划线动画
  • 使用上下文菜单添加粘贴
  • 修复wordAutocomplete并添加completionEscape选项
  • 改进解析命令(它现在将“foo”bar'baz'转换为类似bash的foobarbaz)
  • 修复normalize和子字符串
  • 删除normalize函数中的空格式

v1.3.1 (2017-05-05)

  • 修复导致签名不显示的列/行

v1.3.0版本(2017-05-04)

  • 从主解释器中删除onPop事件(下一个为null)
  • 向parse/split_command api实用程序添加args_quotes
  • 鼠标滚轮在没有jQuery鼠标滚轮的情况下工作并修复文本跳跃
  • 在支持剪贴板事件的浏览器中粘贴图像(使用echo)
  • 修复添加下划线动画后的行数
  • 修复输出限制
  • 在iframe中工作的元素resizer(作为jQuery插件)
  • 添加IntersectionObserver以添加resizer并调用resize(并非所有浏览器都支持它,
  • 存在polyfill)
  • 添加MutationObserver以检测何时从DOM中添加/删除终端,以及
  • 添加时调用IntersectionObserver
  • 固定列和行的计算
  • 新的API实用程序normalize、substring、uncosed_strings和helper iterate_formatting
  • 字符串对象在终端创建时不再保存在变量中,因此您可以
  • 在终端创建后动态更改(使用命令更改语言)
  • 当使用rpc或对象解释器时,当存在
  • 未闭合字符串
  • 添加处理嵌套格式的默认格式化程序

v1.2.0(2017年4月22日)

  • 使终端可供屏幕阅读器访问

v1.1.4 (2017-04-18)

  • 使用带下划线动画的css var修复大小
  • 修复缩小的css(cssnano正在删除未使用的动画)

v1.1.3 (2017-04-16)

  • 修复命令有换行符时单击以更改位置的问题

v1.1.2 (2017-04-12)

  • 从pauseEvents选项表单cmd插件-它总是执行键盘事件

v1.1.1 (2017-04-09)

  • 终端暂停时不要触发密钥映射
  • 修复IE11中的删除
  • keymap/keydown的恢复顺序-首先执行keydown

v1.0版本(2017-04-09)

  • 修复IE11中的删除
  • 修复MacOS chrome上的CMD+V
  • 添加stay选项以插入与cmd插件相同的内容
  • 添加选项pauseEvents-默认设置为true
  • 修复多次调用清除时的异常
  • 修复历史记录:false选项
  • keymap的优先级高于keydown,因此可以使用CTRL+D keymap功能进行覆盖
  • 修复package.json中的贡献者列表,并添加显示贡献者json列表的脚本

v1.0.15 (2017-03-24)

  • 修复按tab键两次且有多个完成时的echo命令
  • 修复了暂停时的CTRL+D(现在恢复解释器)
  • 焦点在暂停时不启用终端(它被隐藏了,你可以输入文本)

v1.0.14 (2017-03-15)

  • 修复命令行位于底部时焦点/模糊上的内容移动
  • 聚焦时点击时不要移动光标
  • 在cmd插件的init上引发关于密钥属性polyfill的异常

v1.0.12 (2017-03-12)

  • 修复Android上点击单词补全时的光标位置

v1.0.11 (2017-03-11)

  • 修复死键逻辑(用于不触发像删除这样的按键的特殊键)

v1.0.10 (2017-03-04)

  • 修复dead_keys逻辑(当在箭头等特殊键之后按键时)

v1.0.8 (2017-02-28)

  • 修复IE和Edge中的粘贴

v1.0.7 (2017-02-27)

  • 修复onInit中调用pause时的exec问题
  • 修复反向搜索
  • 修复完成错误中的3个参数
  • 修复了异步JSON-RPC的哈希登录问题
  • 修复ex中的焦点(false)/禁用

预览截图