为啥这个 jquery 终端命令功能不起作用?

Posted

技术标签:

【中文标题】为啥这个 jquery 终端命令功能不起作用?【英文标题】:Why does this jqueryterminal cmd function not work?为什么这个 jquery 终端命令功能不起作用? 【发布时间】:2018-02-09 01:42:45 【问题描述】:

我有这个,我从 JQueryTerminal 代码的最新 zip 中编辑的:

<html>
<head>
  <meta charset="utf-8" />
  <title>JQuery Terminal Emulator Demo</title>
  <script src="../js/jquery-1.7.1.min.js"></script>
  <script src="../js/jquery.mousewheel-min.js"></script>
  <script src="../js/jquery.terminal.min.js"></script>
  <link href="../css/jquery.terminal.css" rel="stylesheet"/>
    </head>

    <body>
    <div id="some_id"></div>
</body>


    <script>

    $('#some_id').cmd(
        prompt: '> ',
        width: '100%',
        commands: function(command) 
            //process user commands
        
    );

</script>
</html>

.cmd 直接取自网站http://terminal.jcubic.pl/api_reference.php#cmd。为什么我在 Firefox 的 javascript 控制台中得到这个:

TypeError: $ 未定义[了解更多] jquery.terminal.min.js:36:23429

谢谢!

编辑:

我不应该得到 404。我基于示例文件夹中的 tilda-demo.html 文件并将其放在同一个文件夹中。我刚刚检查了开发人员工具。没有 404,还有其他原因吗?

编辑:

更多错误信息如下:

ke file:///Volumes/Macintosh%20HD/jcubic-jquery.terminal-26bc656/js/jquery.terminal.min.js:36:23429 调度文件:///Volumes/Macintosh%20HD/jcubic-jquery.terminal-26bc656>/js/jquery-1.7.1.min.js:3:4299 i file:///Volumes/Macintosh%20HD/jcubic-jquery.terminal-26bc656/js/jquery-1.7.1.min.js:3:311

为了记录,当我输入“ASDSF”时,我在 Chrome Canary 中得到了这个:

jquery.terminal.min.js:36 绑定 jquery.terminal.min.js:36 真 jquery.terminal.min.js:36 Uncaught TypeError:无法读取未定义的属性“A” 在 HTMLHtmlElement.ke (jquery.terminal.min.js:36) 在 HTMLHtmlElement.dispatch (jquery-1.7.1.min.js:3) 在 HTMLHtmlElement.i (jquery-1.7.1.min.js:3) jquery.terminal.min.js:36 Uncaught TypeError: Cannot read property 'S' > of undefined 在 HTMLHtmlElement.ke (jquery.terminal.min.js:36) 在 HTMLHtmlElement.dispatch (jquery-1.7.1.min.js:3) 在 HTMLHtmlElement.i (jquery-1.7.1.min.js:3) jquery.terminal.min.js:36 Uncaught TypeError:无法读取未定义的属性“D” 在 HTMLHtmlElement.ke (jquery.terminal.min.js:36) 在 HTMLHtmlElement.dispatch (jquery-1.7.1.min.js:3) 在 HTMLHtmlElement.i (jquery-1.7.1.min.js:3) jquery.terminal.min.js:36 Uncaught TypeError:无法读取未定义的属性“S” 在 HTMLHtmlElement.ke (jquery.terminal.min.js:36) 在 HTMLHtmlElement.dispatch (jquery-1.7.1.min.js:3) 在 HTMLHtmlElement.i (jquery-1.7.1.min.js:3) jquery.terminal.min.js:36 Uncaught TypeError:无法读取未定义的属性“F” 在 HTMLHtmlElement.ke (jquery.terminal.min.js:36) 在 HTMLHtmlElement.dispatch (jquery-1.7.1.min.js:3) 在 HTMLHtmlElement.i (jquery-1.7.1.min.js:3)

【问题讨论】:

也许你有 404 的 jQuery,检查开发者工具。这是具有相同代码codepen.io/jcubic/pen/XaoqGp的工作示例 嗯,什么?你是说它适用于chrome但不适用于firefox?您在 chrome 中遇到的错误可能是由于 //process user commands 内部的某些内容,这与您最初在问题中提出的错误完全无关。 【参考方案1】:

感谢您的帖子,@jcubic。我找到了解决方案。我需要添加键盘映射。现在它完美地工作了。现在的代码如下所示:

$('#some_id').cmd(
    prompt: '> ',
    width: '100%',
    keymap: function(command) 
    ,
    commands: function(command) 
            console.log(command);
    
);

【讨论】:

这绝对是一个bug,keymap应该是一个对象 修复将在下一个 1.6.5 版本中进行

以上是关于为啥这个 jquery 终端命令功能不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 apt-get 功能在 Mac OS X v10.9 (Mavericks) 的终端中不起作用?

参数在 jquery 终端插件中不起作用

为啥是 Ctrl+.当我将它绑定到 Emacs 中的命令时不起作用?

为啥使用 jQuery 和 PHP 的多项选择自动完成功能不起作用?

为啥这个 jQuery .css() 不起作用?

为啥退出在功能命令中不起作用如何使其工作?