通过Javascript将换行粘贴到剪贴板

通过Javascript将换行粘贴到剪贴板,javascript,clipboard,lines,Javascript,Clipboard,Lines,在提出任何问题之前,我已经对此进行了彻底的研究,并且之前没有在这里发布过答案 我想用Javascript将一些纯文本配置文本发送到剪贴板。文本将由多个命令组成,每行一个命令,这样用户就可以使用文本编辑器(最常见的是Notepad.exe)进入PC上的配置文件(称之为“myconfig.ini”) 我尝试了以下方法: var cCRLF = String.fromCharCode(10,13); var cText = 'This is command line 1'+cCRLF; cText

在提出任何问题之前,我已经对此进行了彻底的研究,并且之前没有在这里发布过答案

我想用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)是不可见的
(出现了那个讨厌的小方框字符)


有人对此有解决办法吗?

我想我确实找到了解决办法。这有点奇怪,但嘿,这是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>

功能测试(cText){
cText=cText.replace(/\n\r?/g,“
”); //创建一个可编辑的DIV并附加要复制的HTML内容 var editableDiv=document.getElementById(“cb”); 带(editableDiv){ contentEditable=true; } editableDiv.innerHTML=cText; //选择可编辑内容并将其复制到剪贴板 var r=document.body.createTextRange(); r、 moveToElementText(editableDiv); r、 选择(); r、 执行命令(“复制”); //取消选择,以便浏览器不会使图元处于可见的选中状态 r、 moveToElementText(document.body); r、 选择(); }
我建议使用剪贴板以外的其他方法向用户发送数据。此方法仅在IE中有效,可以禁用(更新的IE版本会首先提示):


CSS弹出框(用户可以自己复制)可能是更好的(跨平台)解决方案。这可能会有帮助:

解决方案是使用倒勾(``)

供参考:

好的,谢谢大家。我想我会走这条路。我同意,一个更干净的解决方案。用户478094,选择一个答案,这样你的问题就被标记为已解决了,怎么样?ThxUnfortute,
window.clipboardData.setData()
仅在IE中工作,而IE几乎是唯一不支持这种反勾符号的浏览器。
alert(`string text line 1
string text line 2`);