Xtermjs получить текст
Используя xterm.js, как вы получаете текст в консоли (текст вводится с term.write(...)
или другие методы).
Получение textContent HTML не работает, потому что html обрабатывает пробелы по-разному, а xtermjs обрабатывает цвета по-разному.
2 ответа
То, на что вы ссылаетесь - это содержимое буфера терминала.
На данный момент (xterm.js 3.2) не существует общедоступного API для извлечения содержимого буфера, поэтому вам придется обойти это.
Попытка получить содержимое через DOM не будет работать. Xterm.js использует элемент canvas начиная с версии 3.0 вместо элементов DOM div и текстовых узлов для повышения производительности.
Лучший способ сделать это с помощью публичного API - это прослушать data
событие и работа с этим. data
событие генерируется, когда порция данных отправляется на терминал для обработки.
Краткое решение, когдаrendererType
является'dom'
let terminal = new Terminal({
cols: 60,
rows: 60,
useStyle: true,
rendererType: 'dom', // default is canvas, use dom
});
let terminalBuffer = Array.from(terminal.element.querySelectorAll(".xterm-rows>div"))
.map(e=>Array.from(e.querySelectorAll("span"))
.map(e=>e.textContent).join("") ).filter(e=>e!="").join("\n")
console.log(terminalBuffer.trim())