在任何要求之前,我做了彻底的研究,答案以前没有在这里发表过。
我想用Javascript将一些纯文本配置文本发送到剪贴板。该文本将包含多个命令,每行一个命令,以便用户可以使用文本编辑器(最常见的是,Notepad.exe)将其过去到他的PC上的配置文件(称为“myconfig.ini
”)。
我尝试了以下内容:
var cCRLF = String.fromCharCode(10,13);
var cText = 'This is command line 1'+cCRLF;
cText += 'This is command line 2'+cCRLF;
cText += 'This is command line 3'+cCRLF;
cText += 'This is command line 4';
window.clipboardData.setData('Text', cText);
但是当我执行并粘贴到记事本中时,我没有得到单独的行而且行返回字符(cCRLF)无法查看
(出现那个令人讨厌的小盒子字符)
有人有解决方案吗?
答案 0 :(得分:2)
解决方案是使用反向标记(``)
alert(`string text line 1
string text line 2`);
供参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings
答案 1 :(得分:0)
我想我确实找到了解决方案。这有点奇怪,但是,嘿,这是IE的。这是我在stackoverflow上找到的一个修改过的片段。
<body>
<a href="#" onclick='test("This\nIS\nA\nTEST")'>TEST</a>
<div id="cb" style="position: absolute; left: -2000px"></div>
</body>
<script>
function test(cText) {
cText= cText.replace(/\n\r?/g, "<br>");
// create an editable DIV and append the HTML content you want copied
var editableDiv = document.getElementById("cb");
with (editableDiv) {
contentEditable = true;
}
editableDiv.innerHTML= cText;
// select the editable content and copy it to the clipboard
var r = document.body.createTextRange();
r.moveToElementText(editableDiv);
r.select();
r.execCommand("Copy");
// deselect, so the browser doesn't leave the element visibly selected
r.moveToElementText(document.body);
r.select();
}
</script>
答案 2 :(得分:0)
我建议使用除剪贴板之外的其他方法向用户发送数据。此方法仅适用于IE,可以禁用(以及较新的IE版本首先提示):Get clipboard data as array in javascript
CSS弹出框(用户可以从自己复制)可能是一个更好的(和跨平台)解决方案。这可能会有所帮助:http://www.pat-burt.com/web-development/how-to-do-a-css-popup-without-opening-a-new-window/