如何将 div 中的文本复制到剪贴板?我有一个 div,需要添加一个链接,将文本添加到剪贴板。有解决办法吗?
<p class="content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>
<a class="copy-text">copy Text</a>
单击复制文本后,然后按 Ctrl
+ V
,必须粘贴它。
原文由 Dishan TD 发布,翻译遵循 CC BY-SA 4.0 许可协议
截至 2016 年编辑
自 2016 年起,您现在可以在大多数浏览器中将文本复制到剪贴板,因为大多数浏览器都能够使用
document.execCommand("copy")
以编程方式将所选文本复制到剪贴板,这适用于所选内容。与浏览器中的其他一些操作(如打开新窗口)一样,复制到剪贴板只能通过特定的用户操作(如鼠标单击)来完成。例如,它不能通过计时器来完成。
这是一个代码示例:
这是一个更高级的演示: https ://jsfiddle.net/jfriend00/v9g1x0o6/
而且,您还可以获得一个预构建的库,使用 clipboard.js 为您执行此操作。
答案的旧的历史部分
出于安全原因,任何现代浏览器都不允许通过 JavaScript 直接复制到剪贴板。最常见的解决方法是使用 Flash 功能复制到剪贴板,只能通过直接用户点击触发。
如前所述, ZeroClipboard 是一组流行的代码,用于管理 Flash 对象以进行复制。我用过。如果在浏览设备(排除手机或平板电脑)上安装了 Flash,它就可以工作。
下一个最常见的解决方法是将剪贴板绑定的文本放入输入字段,将焦点移动到该字段并建议用户按
Ctrl
+C
复制文本。可以在这些先前的 Stack Overflow 帖子中找到有关该问题和可能的解决方法的其他讨论:
如何在 JavaScript 中复制到剪贴板?
如何使用 jQuery 将文本复制到客户端的剪贴板?
没有 Flash 如何复制到剪贴板?
这些要求使用 Flash 的现代替代方法的问题收到了很多问题的赞成票,但没有解决方案的答案(可能是因为不存在):
HTML5 替代基于 flash 的 ZeroClipboard 以将数据安全复制到剪贴板?
不使用 Flash 复制到剪贴板
Internet Explorer 和 Firefox 曾经有用于访问剪贴板的非标准 API,但它们更现代的版本已经弃用了这些方法(可能出于安全原因)。
有一项 新生的标准努力 试图提出一种“安全”的方法来解决最常见的剪贴板问题(可能需要特定的用户操作,如 Flash 解决方案所需要的),看起来它可能在最新的部分实现Firefox 和 Chrome 版本,但我还没有确认。