在 Web 开发中,将文本复制到系统剪贴板是一项常见需求。过去很多方案依赖 Flash 插件,存在性能问题且无法在移动端良好运行。clipboard.js v2.0.22 实现了纯 JavaScript 的剪贴板操作,无需 Flash 支持,并且兼容 Chrome 42+、Firefox 41+、IE 9+、Opera 29+,包括 iOS Safari 浏览器。
首先在页面中引入 clipboard.js 库文件:- <script src="clipboard.min.js"></script>
复制代码
官方案例一演示了通过 data 属性绑定复制目标。准备一个 textarea 作为来源,按钮上使用- data-clipboard-action="copy"
复制代码 和- data-clipboard-target="#bar"
复制代码 指定复制目标和操作类型。- <textarea id="bar" cols="62" rows="5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false">脚本之家是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。</textarea>
- <button class="btn" data-clipboard-action="copy" data-clipboard-target="#bar">Cut to clipboard</button>
复制代码
然后实例化 Clipboard 对象并绑定事件:- <script>
- var clipboard = new Clipboard('.btn');
- clipboard.on('success', function(e) {
- console.info('Action:', e.action);
- console.info('Text:', e.text);
- console.info('Trigger:', e.trigger);
- alert("复制成功");
- e.clearSelection();
- });
- clipboard.on('error', function(e) {
- console.error('Action:', e.action);
- console.error('Trigger:', e.trigger);
- });
- </script>
复制代码 success 回调中可以通过 e.text 获取复制的文本,e.action 获得操作类型(copy 或 cut),e.trigger 获得触发元素。调用可清空文本选中状态。
官方实例二展示了另一种初始化方式,但按钮上未设置 data 属性:- <script src="dist/clipboard.min.js"></script>
- <button class="btn">
- <script type="text/javascript">
- var clipboard = new Clipboard('.btn');
- clipboard.on('success', function(e) {
- console.info('Action:', e.action);
- console.info('Text:', e.text);
- console.info('Trigger:', e.trigger);
- e.clearSelection();
- });
- clipboard.on('error', function(e) {
- console.error('Action:', e.action);
- console.error('Trigger:', e.trigger);
- });
- </script>
复制代码 注意实例二中按钮缺少或属性,因此无法指定复制内容,实际开发中需根据需求添加相应 data 属性。
clipboard.js 通过纯 JavaScript 事件处理实现了跨浏览器、跨设备的剪贴板复制,替代了传统的 Flash 方案,显著提升了页面性能和用户体验。若需复制已有元素内容,推荐使用示范一中的 data 属性绑定方式;若需动态生成复制文本,可使用属性。事件监听机制可方便地集成反馈提示,是前端开发中处理剪贴板操作的实用工具。 |