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

How to make javascript handle 'ESCAPE(\u001B)' character?

我想制作为 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;
}

结果不是我想要的

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

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

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

如何使我的 javascript 代码能够正确地(按原样)处理 (\u001B)?

好的。我找到了方法。

  1. 我需要展示'ESCAPE'个角色 我决定改为显示 。并向 <input> 'DO NOT COPY THIS TEXT' 添加评论之类的东西。所有内部函数都使用 而不是 'ESCAPE' 因为我只在复制到剪贴板时才需要它。
  2. 我需要复制'ESCAPE'个字符 将字符串复制到 <input> 后,将 转换为 'ESCAPE' 时使用相同的变量。我使用 hidden <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);
}

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