我怎样才能让我的复制和粘贴功能保持换行格式?

How can I get my Copy and Paste function to keep new line formatting?

我只需要它在 Google Chrome 上工作,所以不需要多浏览器兼容代码。

这是我用来将文本复制到剪贴板的JS函数。

 // Copy text to clip-board JS
  
  function copy(txt){
    var cb = document.getElementById("cb");
    cb.value = txt;
    cb.style.display='block';
    cb.select();
    document.execCommand('copy');
    cb.style.display='none';
  }

 var var1='download here: \n www.link-to-download.com';

这是我的HTML

  <button class="buttonClass" onclick="copy(softwareinstall)">Install software</button>
    <textarea id="cb" style="display: none"></textarea>

当我点击按钮时,它会复制到剪贴板,但是当我将内容粘贴到其他地方时,例如记事本和 outlook,文本都在一行上,\n 什么都不做。

我希望将字符串分成 2 行。

先谢谢你。

这是因为输入元素不支持换行,所以你的\n丢失了。尝试改用文本区域:

// Copy text to clip-board JS
  
  function copy(txt){
    var cb = document.getElementById("cb");
    cb.value = txt;
    cb.style.display='block';
    cb.select();
    document.execCommand('copy');
    cb.style.display='none';
  }

 var var1='first line of text \n second line of text';
<button onclick="copy(var1)">Copy Option 1</button>
<textarea id="cb" style="display: none"></textarea>

如果它是一个选项,您可以使用 navigator.clipboard.writeText() 而不是 document.execCommand() 轻松保留您的文本内容,因为它不会从 DOM 复制。类似于:

const str = "Text \n on \n different lines";
navigator.clipboard.writeText(str).then(() =>
   console.log("copied")
);