简体   繁体   English

如何在 xterm.js 中创建链接

[英]How to create links in xterm.js

I am using xterm.js to write a reporting tool that displays results on the xterm.js Terminal.我正在使用 xterm.js 编写一个在xterm.js终端上显示结果的报告工具。 I want some of these test results that are written to the terminal to be links that when pressed I can trigger some sort of JavaScript function to handle my next step.我希望写入终端的这些测试结果中的一些是链接,当按下时我可以触发某种 JavaScript function 来处理我的下一步。 I was looking over the documentation and found an interface called ILink that supposedly does what I'm looking for but I have no idea how to use it.我正在查看文档并找到了一个名为ILink的界面,据说它可以满足我的需求,但我不知道如何使用它。 Is xterm.js capable of something like this? xterm.js 有这样的能力吗?

OSC 8 hyperlinks are supported since xterm.js#4005xterm.js#4005起支持 OSC 8 超链接

based on readme.md#addons基于readme.md#addons

using xterm-addon-web-links使用xterm-addon-web-links

import { Terminal } from 'xterm';
import { WebLinksAddon } from 'xterm-addon-web-links';

const terminal = new Terminal();
term.open(document.getElementById('terminal'));

// clickable links
// default handler: open the link
terminal.loadAddon(new WebLinksAddon());
// custom handler
/*
function onLinkClick(_event, url) {
  console.log(`clicked link: ${url}`);
}
terminal.loadAddon(new WebLinksAddon(onLinkClick));
*/

// simple link
terminal.writeln('click here: https://xtermjs.org/');

// OSC 8 hyperlink escape codes
// not working in xterm.js?
terminal.writeln('click here: \x1b]8;;https://xtermjs.org\x07OSC 8 hyperlink text\x1b]8;;\x07');

alternative: xterm-link-provider替代方案: xterm-link-provider

import { Terminal } from 'xterm';
import { LinkProvider } from 'xterm-link-provider';

const terminal = new Terminal();
term.open(document.getElementById('terminal'));

const linkRegex = /(CLICKME)/gu
terminal.registerLinkProvider(
  new LinkProvider(
    terminal,
    linkRegex,
    (_event, text) => {
      console.log(text)
    }
  )
)

terminal.writeln('click here: CLICKME');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM