在vue使用clipboard.js进行一键复制文本的实现示例


Posted in Javascript onJanuary 15, 2019

需求

最近在做商城项目,有个需求是需要点击复制订单号的,然后就觉得可以使用原生的复制方法和使用第三方库。

浏览器原生方法

这种方式兼容性不是太好,还要看浏览器是否支持,容易采坑。

//在IE中可以用window.clipboardData.setData('text','内容')实现。
//在IE中clipboardData是window的属性,而其他浏览器则是相应的event对象的属性,这实际上是一种安全措施,防止未经授权的访问,为了兼容其他浏览器,所以我们不能通过clipboardData来实现这种操作。
//具体做法:
//1.创建一个隐藏的input框
//2.点击的时候,将要复制的内容放进input框中
//3.选择文本内容input.select()
//4.这里只能用input或者textarea才能选择文本。
//5.执行浏览器的复制命令document.execCommand("copy")。
 function copyText() {
  var text = document.getElementById("text").innerText; // 获取要复制的内容也可以传进来
  var input = document.getElementById("input"); // 获取隐藏input的dom
  input.value = text; // 修改文本框的内容
  input.select(); // 选中文本
  document.execCommand("copy"); // 执行浏览器复制命令
  alert("复制成功");
 }

//在事件中可以通过e 对内容进行修饰
document.body.oncopy = e => {
  // 监听全局复制 做点什么
}
 // 还有这种写法:
document.addEventListener("copy", e => {
 // 监听全局复制 做点什么
});

使用 clipboard.js

我们要先安装

npm install clipboard --save

在 mian.js 中引入,当然我们也可以在用到的 .vue 中引入,因为我不止一个地方用到了复制,所以直接在 main.js 里面引入了。

import clipboard from 'clipboard';
//注册到vue原型上
Vue.prototype.clipboard = clipboard;

在需要的地方使用

//dom
···
<div class="sn Lfll Lmr20">订单编号:
  <span data-clipboard-action="copy" class="cobyOrderSn" :data-clipboard-text="orderData.orderSn" @click="copyLink">{{orderData.orderSn}}</span>
 </div>
···
//js
···
 copyLink() {
   let _this = this;
   let clipboard = new this.clipboard(".cobyOrderSn");
   clipboard.on('success', function () {
    _this.$toast("复制成功")
   });
   clipboard.on('error', function () {
    _this.$toast("复制失败")
   });
 }
···

当然 clipboard.js 的功能可不止这么简单,我们还可使用它进行剪切,还可以通过它复制其他元素的值等,具体的使用可查看官方文档: clipboard.js ;

小结

关于浏览器一键复制,推荐使用 clipboard.js 来做,因为现在原生方法兼容性并不是很好,而且 clipboard.js 文件并不大,但是却可以帮我们做很多事情,减轻很多调试和避免采坑。以上只是记录一下自己遇到的问题,如有错误,还请指正,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript温习的一些笔记 基础常用知识小结
Jun 22 Javascript
JQuery触发事件例如click
Sep 11 Javascript
jquery按回车提交数据的代码示例
Nov 05 Javascript
js日期对象兼容性的处理方法
Jan 28 Javascript
jQuery+AJAX实现无刷新下拉加载更多
Jul 03 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
Aug 18 Javascript
js实现的在线调色板功能完整实例
Dec 21 Javascript
微信小程序 网络请求(post请求,get请求)
Jan 17 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
Feb 01 Javascript
深度解读vue-resize的具体用法
Jul 08 Javascript
JavaScript实现缓动动画
Nov 25 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
Jan 15 #Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 #Javascript
详解webpack引入第三方库的方式以及注意事项
Jan 15 #Javascript
JS高阶函数原理与用法实例分析
Jan 15 #Javascript
JS立即执行函数功能与用法分析
Jan 15 #Javascript
vue-cli 目录结构详细讲解总结
Jan 15 #Javascript
webpack file-loader和url-loader的区别
Jan 15 #Javascript
You might like
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
node.js express中app.param的用法详解
2017/07/16 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
Python异常处理操作实例详解
2018/05/10 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
Python和Sublime整合过程图示
2019/12/25 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
学校三八妇女节活动情况总结
2014/03/09 职场文书
经济担保书范文
2014/04/02 职场文书
三好学生评语大全
2014/12/29 职场文书