查看: 280|回复: 1

JavaScript 无 Flash 复制剪贴板:Clipboard.js v2.0.22 实例详解

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
在 Web 开发中,将文本复制到系统剪贴板是一项常见需求。过去很多方案依赖 Flash 插件,存在性能问题且无法在移动端良好运行。clipboard.js v2.0.22 实现了纯 JavaScript 的剪贴板操作,无需 Flash 支持,并且兼容 Chrome 42+、Firefox 41+、IE 9+、Opera 29+,包括 iOS Safari 浏览器。

首先在页面中引入 clipboard.js 库文件:
  1. <script src="clipboard.min.js"></script>
复制代码

官方案例一演示了通过 data 属性绑定复制目标。准备一个 textarea 作为来源,按钮上使用
  1. data-clipboard-action="copy"
复制代码
  1. data-clipboard-target="#bar"
复制代码
指定复制目标和操作类型。
  1. <textarea id="bar" cols="62" rows="5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false">脚本之家是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。</textarea>
  2. <button class="btn" data-clipboard-action="copy" data-clipboard-target="#bar">Cut to clipboard</button>
复制代码

然后实例化 Clipboard 对象并绑定事件:
  1. <script>
  2. var clipboard = new Clipboard('.btn');
  3. clipboard.on('success', function(e) {
  4.     console.info('Action:', e.action);
  5.     console.info('Text:', e.text);
  6.     console.info('Trigger:', e.trigger);
  7.     alert("复制成功");
  8.     e.clearSelection();
  9. });
  10. clipboard.on('error', function(e) {
  11.     console.error('Action:', e.action);
  12.     console.error('Trigger:', e.trigger);
  13. });
  14. </script>
复制代码
success 回调中可以通过 e.text 获取复制的文本,e.action 获得操作类型(copy 或 cut),e.trigger 获得触发元素。调用
  1. e.clearSelection()
复制代码
可清空文本选中状态。

官方实例二展示了另一种初始化方式,但按钮上未设置 data 属性:
  1. <script src="dist/clipboard.min.js"></script>
  2. <button class="btn">
  3. <script type="text/javascript">
  4. var clipboard = new Clipboard('.btn');
  5. clipboard.on('success', function(e) {
  6.     console.info('Action:', e.action);
  7.     console.info('Text:', e.text);
  8.     console.info('Trigger:', e.trigger);
  9.     e.clearSelection();
  10. });
  11. clipboard.on('error', function(e) {
  12.     console.error('Action:', e.action);
  13.     console.error('Trigger:', e.trigger);
  14. });
  15. </script>
复制代码
注意实例二中按钮缺少
  1. data-clipboard-text
复制代码
  1. data-clipboard-target
复制代码
属性,因此无法指定复制内容,实际开发中需根据需求添加相应 data 属性。

clipboard.js 通过纯 JavaScript 事件处理实现了跨浏览器、跨设备的剪贴板复制,替代了传统的 Flash 方案,显著提升了页面性能和用户体验。若需复制已有元素内容,推荐使用示范一中的 data 属性绑定方式;若需动态生成复制文本,可使用
  1. data-clipboard-text
复制代码
属性。事件监听机制可方便地集成反馈提示,是前端开发中处理剪贴板操作的实用工具。
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层

Re: JavaScript 无 Flash 复制剪贴板:Clipboard.js v2.0.22 实例详解

感谢楼主分享这么详细的 clipboard.js 使用教程!之前一直纠结剪贴板操作的兼容性问题,这个纯 JS 方案确实方便很多。特别是示例一中通过 data 属性绑定复制目标的方式,直观又易用,而且事件回调里还能拿到复制文本和触发元素,对集成反馈提示很友好。示例二确实容易被忽略 data 属性,楼主提醒得很及时。准备把这段代码应用到自己的项目里试试,谢谢了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-14 06:43 , Processed in 0.025523 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部