如何用JavaScript将超文本链接复制到剪贴板并保留其链接属性 [英] How to copy a HyperText link into clipboard with JavaScript and preserve its link properties

查看:40
本文介绍了如何用JavaScript将超文本链接复制到剪贴板并保留其链接属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

基本上我非常清楚如何将内容复制到剪贴板中,我目前的解决办法是创建一个不可见的小文本区域,在其中放置我想要复制的文本,然后使用js选择文本区域内的所有文本,并执行复制命令,如下所示:

document.execCommand('copy');

好的,我可以毫无问题地复制原始文本,我可以将链接复制到我的剪贴板中,但是一旦我粘贴它,该链接就只是文本,而不是可以单击以转到其目标的活动链接。

我知道为什么会发生这种情况,一旦我将链接放入文本区域,它就不再是链接,但我不知道在不断开链接的情况下执行此操作的任何其他方法。

所以,一旦我复制了链接,我就不需要用js修改它或更改href或其他任何东西,一旦我复制了链接,我想把它粘贴到我无法控制的另一个页面,我希望我的链接仍然是一个链接,而不是简单的文本。

如有任何帮助,我们将不胜感激。 由于我正在处理的项目,我不能依赖于库来做到这一点,我需要一些本机js解决办法

本帖子与如何在JavaScript中复制到剪贴板的帖子不同?我已经知道如何做到这一点。我想知道的是如何才能在不丢失链接属性的情况下复制链接。

推荐答案

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

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
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>

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

这篇关于如何用JavaScript将超文本链接复制到剪贴板并保留其链接属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆