You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在浏览器端的Xterm.js中添加自定义命令及响应逻辑?

用Xterm.js实现浏览器端自定义命令终端

以下是具体实现步骤,以你要求的getInfo命令为例:

1. 引入Xterm.js资源

首先在HTML中引入Xterm的样式和核心脚本,可选引入适配容器的插件:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/xterm@5.3.0/css/xterm.css" />
<script src="https://cdn.jsdelivr.net/npm/xterm@5.3.0/lib/xterm.js"></script>
<script src="https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.8.0/lib/xterm-addon-fit.js"></script>

2. 准备终端容器

在页面中添加一个DOM元素作为终端的载体:

<div id="terminal" style="width: 800px; height: 600px; border: 1px solid #ccc;"></div>

3. 初始化终端实例

编写JS代码初始化终端,配置基础样式并挂载到容器:

// 创建终端实例,配置外观和行为
const terminal = new Terminal({
  fontSize: 14,
  cursorBlink: true,
  theme: {
    background: '#1e1e1e',
    foreground: '#d4d4d4'
  }
});

// 将终端挂载到DOM容器
const container = document.getElementById('terminal');
terminal.open(container);

// 加载适配插件,让终端自动适配容器大小(可选)
const fitAddon = new FitAddon.FitAddon();
terminal.loadAddon(fitAddon);
fitAddon.fit();

// 显示初始提示符
terminal.write('> ');

4. 核心:处理输入与命令逻辑

监听终端的输入事件,解析用户命令并执行自定义逻辑:

// 存储用户输入的内容
let inputBuffer = '';

// 定义命令映射:键是命令名,值是对应的执行函数
const commandMap = {
  getInfo: () => {
    // 这里编写你的自定义脚本逻辑,比如获取数据、计算等
    return 'Information about something';
  },
  // 可扩展更多命令
  help: () => {
    return '支持的命令:\n- getInfo: 获取指定信息\n- help: 查看命令列表';
  }
};

// 监听终端输入事件
terminal.onData((data) => {
  switch (data) {
    // 处理回车:执行命令
    case '\r':
      terminal.write('\n');
      const cmd = inputBuffer.trim();
      
      if (cmd) {
        if (commandMap[cmd]) {
          // 执行对应命令并输出结果
          const result = commandMap[cmd]();
          terminal.write(`> ${result}\n`);
        } else {
          terminal.write(`> 未知命令:${cmd}\n`);
        }
      }
      
      // 重置输入缓冲区,显示新提示符
      inputBuffer = '';
      terminal.write('> ');
      break;
    // 处理退格:删除输入的字符
    case '\x7F':
      if (inputBuffer.length > 0) {
        inputBuffer = inputBuffer.slice(0, -1);
        terminal.write('\b \b');
      }
      break;
    // 处理普通字符输入
    default:
      inputBuffer += data;
      terminal.write(data);
  }
});

运行测试

打开页面后,输入getInfo并回车,终端会输出你定义的Information about something;输入help可查看命令列表,输入未知命令会得到错误提示。

内容的提问来源于stack exchange,提问作者Mohammad Hossein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:10:56