将HTML元素的innerText复制到剪贴板

时间:2019-02-04 14:56:59

标签: javascript

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

我尝试过同时使用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锚点的文本。

1 个答案:

答案 0 :(得分:0)

即使使用document.querySelector('a').childNodes[0]选择文本节点,我也无法使其正常工作,范围似乎想复制为链接。

我建议使用可以复制任何文本字符串的函数,无论如何,您当前的代码将无法在许多设备上运行,例如How do I copy to the clipboard in JavaScript?

然后将字符串传递给单击时的字符串-copyToClipboard(document.querySelector('a').innerText)