javascript - 将数据复制到剪贴板而不选择任何文本
问题描述
是否有任何跨平台,甚至主要是跨平台的方式来将文本复制到 JavaScript 中的剪贴板,而无需制作元素,将其放在页面上,然后选择文本?带有“复制到剪贴板”按钮的网站是如何做到的?我不希望它使用输入字段,因为我的想法是将任何内容复制到剪贴板,甚至可能不在元素中的内容。
解决方案
我相信这些天你可以使用 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。” 这表明它可能没有提供问题的答案。但是,我还没有查看来源来验证这个假设。
推荐阅读
- c# - 使用 Ajax aspnet mvc 5 的部分视图
- html - 如何去除 flex 容器中 div 之间的接缝
- javascript - 如何使用 ngx-chips 设置初始值
- javascript - 如何使用 {variableName} 创建变量/常量
- java - JSP Spring eval是解析int(为什么不解析long)
- c++ - 为 iostream 和 fstream 重载 <<
- c# - JSON 日期字段不绑定到 C# 日期时间字段
- php - 致命错误:未捕获的 PDOException:SQLSTATE[HY093]:无效参数号:未定义参数
- java - java调用c++多线程库,不释放c++创建的线程
- python - 数据框 - 使用 IF 公式创建基于另一个列