我有一个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锚点的文本。
答案 0 :(得分:0)
即使使用document.querySelector('a').childNodes[0]
选择文本节点,我也无法使其正常工作,范围似乎想复制为链接。
我建议使用可以复制任何文本字符串的函数,无论如何,您当前的代码将无法在许多设备上运行,例如How do I copy to the clipboard in JavaScript?
然后将字符串传递给单击时的字符串-copyToClipboard(document.querySelector('a').innerText)