我想制作一个网站,为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)?
答案 0 :(得分:0)
好。我找到了方法。
←
。并在<input>
'不要复制此文本'之类的内容中添加了注释。所有内部函数都使用←
而不是'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);
}
我希望我的解决方法能帮助遭受同样问题的其他人。