首页 > 解决方案 > 将 HTML 元素的 innerText 复制到剪贴板

问题描述

我有一个 HTML 锚元素,我只想将该元素的 innerText 复制到剪贴板。我尝试的所有方法似乎都复制了 innerText 和锚本身,因此只需粘贴已复制的内容即可将文本显示为链接。所以它似乎是在复制元素的 outerHtml。我知道我可以粘贴为纯文本,但我只想复制文本。有没有办法做到这一点,而不涉及隐藏输入等骇人听闻的解决方案?

我已经尝试使用 Range.selectNode 和 Range.selectNodeContents,但它们的行为似乎相同,并且在复制到剪贴板的内容中包含锚点。

这是一个说明这一点的小提琴:https ://jsfiddle.net/zjoraen1/

function copyMe {
    getSelection().removeAllRanges();
    var range = document.createRange();
    range.selectNodeContents(document.querySelectorAll("a")[0]);
    getSelection().addRange(range);
    document.execCommand("copy");
}

我希望粘贴纯文本,但看到格式化为 HTML 锚的文本。

标签: javascript

解决方案


即使选择带有 , range 的文本节点,我也无法让它工作document.querySelector('a').childNodes[0],似乎想要复制为链接。

我建议使用可以复制任何文本字符串的函数,您当前的代码无论如何都无法在许多设备上运行,例如如何在 JavaScript 中复制到剪贴板?

只需在点击时将字符串传递给它 -copyToClipboard(document.querySelector('a').innerText)


推荐阅读