【问题标题】:How can I get my Copy and Paste function to keep new line formatting?如何让我的复制和粘贴功能保持新的行格式?
【发布时间】:2020-09-16 08:57:28
【问题描述】:

我只需要它在 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 行。

先谢谢你了。

【问题讨论】:

  • 尝试使用\r\n 换行。 \n 是unix方式。
  • @MarkBaijens 我试过使用 \r\n 但这没有效果,我有 \n 使用不同的方法工作,所以我不认为是 \n 导致它没有工作。
  • 您的代码在将var1 更改为softwareinstall 时工作正常
  • @MarkBaijens 抱歉,我在这里写错了,实际代码是正确的。仍然无法正常工作。

标签: javascript html copy copy-paste paste


【解决方案1】:

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

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

【讨论】:

  • 抱歉,我对 javascript 还很陌生。你介意分解一下这对我来说是如何工作的吗?
  • writeText() 只是将传入的任何文本复制到剪贴板,而无需从 DOM 存储/检索它。它是异步的,这就是 .then(() =&gt; console.log("copied")) 的原因,这是一个可选函数,在复制完成时会被调用
  • 太好了,我试试看,如果我能正常工作,我会在这里更新。
【解决方案2】:

这是因为输入元素不支持换行,所以你的 \n 会丢失。尝试使用 textarea 代替:

// 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>

【讨论】:

  • 我不确定我在哪里出错了,如果我运行你在该示例中所做的事情,它可以正常工作。但是我已经在我的代码中实现了这个,它对我不起作用。我不确定我错过了什么。请你看看我的编辑。
  • 因为我的答案(以及您编辑的问题)中的代码有效,所以了解网站的其余代码会很有帮助。也许您可以创建一个显示问题的最小示例?
猜你喜欢
  • 2016-02-20
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
相关资源
最近更新 更多