如何在jquery终端上使终端提示保存在本地存储中?

问题描述 投票:0回答:1

我正在尝试找到一种方法,当您尝试此命令时:

custprmt: function(pstr, ifbold) {

if(ifbold === '-makebold') {
     localStorage.setItem('myNEWprompt', pstr);
this.set_prompt('[[b;var;]' + pstr +' ')
}

else  {
             localStorage.setItem('myNEWprompt', pstr);
       this.set_prompt(pstr +' ')
       }

},

它将根据用户输入的内容生成自定义提示,并将其保存到本地存储。 然后使用以下代码:

$(document).ready(function () {
   if (myNEWprompt) {
      set_prompt(myNEWprompt)
       } else {
        set_prompt('guest$ ')
      }
      });

它将在页面加载时加载自定义提示。我的问题是第二组代码没有加载保存的提示。我觉得这可能是因为

set_prompt
但我不确定,我尝试过
this.set_prompt
prompt: 
但没有效果。我不太确定该怎么办,我不知道这是否可能,所以请帮忙,我们将非常感谢您的帮助:)

javascript html project jquery-terminal
1个回答
0
投票

看起来您想要带有选项的命令。有一些辅助方法可以实现这一点

$.terminal.parse_options()

您的代码可以如下所示:

$('body').terminal({
  custprmt(...args) {
    const options = $.terminal.parse_options(args);
    if (options._.length !== 1) {
      this.error('Usage: custprmt prompt [options]');
    } else {
      let prompt = options._[0];
      if (options.makebold) {
        prompt = '[[b;white;]' + prompt + ']';
      }
      localStorage.setItem('myNEWprompt', prompt);
      this.set_prompt(prompt);
    }
  }
}, {
    checkArity: false,
    greetings: false,
    completion: true,
    prompt: localStorage.getItem('myNEWprompt') ?? 'guest$ '
});

但请注意,名称较长的选项需要双破折号。所以你需要输入:

custprmt "hello> " --makebold

如果您想在提示后有一个空格,则需要对提示加引号。

这是一个工作演示

当您解析选项时,您的语法与 Yargs 类似。

您有一个对象,其中每个选项作为字段,如果该选项是一个标志,则它具有 true 或 false 值,或者如果它是一个带有参数的选项,则它具有一个字符串作为值。如果是像您这样的布尔选项,您可以使用第二个参数来指示该选项是布尔值,因此可以在普通参数之前使用它。

示例:

$.terminal.parse_options(args, {boolean: ["makebold"]});

使用此功能时,您可以使用如下命令:

custprmt --makebold "hello> "

输出将是相同的,makebold选项将是一个布尔标志。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.