如何使javascript处理'ESCAPE(\ u001B)'字符?

我想制作一个网站,为Windows 10命令提示符生成支持'ESCAPE'(\ u001B)字符样式字符串的代码。
您可以在HERE上查看示例。

注意:由于此站点无法正确显示``(\ u001B),因此我将使用

问题是,当我尝试编写如下代码来为命令提示符编写代码时:

function cdGenerate() {
  var input = document.getElementById('ipText').value;

  console.log(`input: ${input}`);

  input = checkStyle(input);
  console.log(`checkStyle input : ${input}`);
  input = checkForeground(input);
  console.log(`checkForeground input : ${input}`);
  input = checkBackground(input);
  console.log(`checkBackground input : ${input}`);

  str = input;

  console.log(`str: ${str}`);

  document.getElementById('spResult').innerHTML = `<code>${str}</code>`;
  copy(str);
}
function checkStyle(ori) {
  var rtb = '←[';

  if (document.getElementById('g-style-reset').checked) { rtb += '0;' }
  if (document.getElementById('g-style-bold').checked) { rtb += '1;' }
  if (document.getElementById('g-style-underline').checked) { rtb += '4;' }
  if (document.getElementById('g-style-inverse').checked) { rtb += '7;' }

  rtb = rtb.slice(0,-1);
  rtb += 'm';

  var rtn = rtb.concat(ori);
  return rtn;
}

结果不是我想要的。

我在TEST HTML输入元素中输入了ipText并执行了cdGenerate(),我应该得到的是←[7mTEST就像ipResult HTML input元素中的东西。但是我只能得到TEST,而不能得到←[7mTEST

我已经用而不是\u001B测试了这些代码,并且没有任何改变。

此外,我需要将这些←[7mTEST复制到用户的剪贴板中。

如何使我的JavaScript代码正确(按原样)处理(\ u001B)?

hc1239 回答:如何使javascript处理'ESCAPE(\ u001B)'字符?

好。我找到了方法。

  1. 我需要显示“ ESCAPE”字符 我决定改为显示。并在<input>'不要复制此文本'之类的内容中添加了注释。所有内部函数都使用而不是'ESCAPE',因为我只在复制到剪贴板时才需要它。
  2. 我需要复制“ ESCAPE”字符 将字符串复制到<input>后,将转换为'ESCAPE'时使用相同的变量。然后我使用隐藏的<div>粘贴字符串(包括“ ESCAPE”)并将其复制到剪贴板。如果使用<input>,则无法正确复制'ESCAPE'字符,因此我使用了<div>。无论如何,<div>的内容在将其内容复制到剪贴板后会被清除。
function copyToClipboard(string) {
  $id('hide').innerHTML = string;
  var temp = document.createElement('input');
  document.body.appendChild(temp);
  temp.setAttribute('value',string);
  temp.select();
  document.execCommand('copy');
  document.body.removeChild(temp);
}

我希望我的解决方法能帮助遭受同样问题的其他人。

本文链接:https://www.f2er.com/3133417.html

大家都在问