首页 > 解决方案 > 将数据复制到剪贴板而不选择任何文本

问题描述

是否有任何跨平台,甚至主要是跨平台的方式来将文本复制到 JavaScript 中的剪贴板,而无需制作元素,将其放在页面上,然后选择文本?带有“复制到剪贴板”按钮的网站是如何做到的?我不希望它使用输入字段,因为我的想法是将任何内容复制到剪贴板,甚至可能不在元素中的内容。

标签: javascripthtmlcross-browser

解决方案


我相信这些天你可以使用 navigator.clipboard 如果你只关心它在现代版本的 chrome、firefox、edge 和 opera 中的工作。

https://developer.mozilla.org/en-US/docs/Web/API/Clipboard

例如

var amazingText = "Hello World! How sweet the content";
navigator.clipboard.writeText(amazingText);

对于 safari,即旧浏览器和任何其他支持,您最好的方法是检查是否定义了 navigator.clipboard 并回退到旧的低效创建丢弃元素选择和复制作为最后的手段。

我主要在有相当大的数据要复制到剪贴板时使用它,因为我注意到 select 和 exec 方法的性能问题。

编辑*

我按照建议简要查看了 clipboard.js 网站,其中有一句话说“这个库依赖于 Selection 和 execCommand API。” 这表明它可能没有提供问题的答案。但是,我还没有查看来源来验证这个假设。

https://clipboardjs.com/#browser-support


推荐阅读