XTerm JS:允许用户输入/发出命令(在html/js中)

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

我一直在检查一些可以用于我的网站的 HTML/JS/CSS 终端,并且遇到了 XTerm.js。我决定尝试一下,但我有点困惑,插入我从网站找到的一些代码(忘记了名字)后,我加载了终端,但我的主要问题是:我不知道如何添加命令,或者一般有用户输入。我在下面添加了终端的片段,如果您尝试输入它,则不会发生任何事情,也不会注册任何密钥。

我尝试查看这里/网站上的几个问题,但似乎没有一个对我有帮助,尽管我对 JS 和 HTML 的知识还很低,所以也可能是这样。我还检查了 XTerm docs,但说实话,这对我来说有点困惑。有人可以帮我吗?我想知道如何为终端发出命令,并允许用户输入。

(另外,我很确定我需要一个后端服务来为 XTerm 创建“命令”,但我正在本地寻找一些东西。比如本地 echo,并在命令执行时运行 JS。)

这是我当前的代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>XTerm terminalr</title>
  <link href="https://unpkg.com/xterm/css/xterm.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/xterm.js"></script>
</head>
<body>
    
 <div id="terminal"></div>
 <link href="https://cdn.jsdelivr.net/npm/[email protected]/meslo.min.css" rel="stylesheet">
 
<style>

#terminal {
 width: 37%;
 font-size: 20px;
 font-family: meslo;
}

</style>

<script>
 
const term = new Terminal();
const shellprompt = 'root@XTerm:~# ';

function termKeyPress(ev) {
  term.on('key', (key, ev) => {
        console.log(key.charCodeAt(0));
        if (key.charCodeAt(0) == 13)
            term.write('\n');
        term.write(key);
});
}

term.open(document.getElementById('terminal'));
term.prompt = function () {
  term.write('\r' + shellprompt);
};

term.writeln('AT: localHost\n');
term.prompt();

 </script>
</body>
</html>

javascript html terminal web-frontend xtermjs
1个回答
0
投票

看来你需要使用

onKey
事件。你可以在库源代码中找到它,我找不到任何文档。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>XTerm terminalr</title>
  <link href="https://unpkg.com/xterm/css/xterm.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/xterm.js"></script>
</head>
<body>
    
 <div id="terminal"></div>
 <link href="https://cdn.jsdelivr.net/npm/[email protected]/meslo.min.css" rel="stylesheet">
 
<style>

#terminal {
 width: 37%;
 font-size: 20px;
 font-family: meslo;
}

</style>

<script>
 
const term = new Terminal();
const shellprompt = 'root@XTerm:~# ';


term.onKey(({key, domEvent}) => {
    console.log(key.charCodeAt(0));
    if (key.charCodeAt(0) == 13) {
        term.write('\n');
    }
    term.write(key);
});

term.open(document.getElementById('terminal'));
term.prompt = function () {
  term.write('\r' + shellprompt);
};

term.writeln('AT: localHost\n');
term.prompt();

 </script>
</body>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.