如何使用JavaScript将超文本链接复制到剪贴板并保留其链接属性

时间:2018-10-26 07:52:46

标签: javascript html clipboard

我一直想知道如何复制带有HREF和文本的链接,例如,我们有一个像这样的标签:

<a href="http://mysite.sample/?creds=creds">Quick Access to the website</a>

所以基本上我完全知道如何将某些内容复制到剪贴板,我目前的解决方法是创建一个不可见的小文本区域,在其中放置要复制的文本,然后用js选择文本区域内的所有文本并执行以下复制命令:

document.execCommand('copy');

好的,这样我就可以复制原始文本了,可以将链接复制到剪贴板中,但是一旦粘贴,链接就是文本,而不是可以单击以转到其目的地的有效链接。

我知道为什么会发生这种情况,将链接放入文本区域后,它就不再是链接了,但是我不知道有没有其他方法可以打破链接。

因此,一旦我复制了链接,就不需要用js修改或更改href或其他任何内容,一旦复制了链接,我就希望将其粘贴到无法控制的其他页面中,我的链接仍然是链接,而不是简单的文本。

任何帮助将不胜感激。 由于我正在处理的项目无法执行,因此我需要某种本机js解决方法

  

此帖子与如何使用JavaScript复制到剪贴板中的帖子不同。我已经知道该怎么做。我想知道的是如何在不丢失链接属性的情况下复制链接。

1 个答案:

答案 0 :(得分:1)

<textarea>只能包含文本。您需要复制一个实际的链接。试试这个:

const onClick = evt => {
  const link = document.querySelector('a');
  const range = document.createRange();
  range.selectNode(link);
  const selection = window.getSelection();
  selection.removeAllRanges();
  selection.addRange(range);

  const successful = document.execCommand('copy');
};

document.querySelector('button').addEventListener('click', onClick);
This is an <a href="https://example.com">Example</a>.

<button>Copy</button>

编辑:我注意到我错过了关于...电子邮件的大量讨论?但我按要求回答了问题-如何将实际链接复制到剪贴板。