在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 相关文章推荐
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 Javascript
js编写trim()函数及正则表达式的运用
Oct 24 Javascript
jquery绑定事件不生效的解决方法
Feb 11 Javascript
jQuery插件kinMaxShow扩展效果用法实例
May 04 Javascript
js实现搜索框关键字智能匹配代码
Mar 26 Javascript
jQuery 遍历map()方法详解
Nov 04 Javascript
JS设计模式之访问者模式定义与用法分析
Feb 05 Javascript
vue中使用gojs/jointjs的示例代码
Aug 24 Javascript
Three.js实现3D机房效果
Dec 30 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
Oct 15 Javascript
在vue项目中封装echarts的步骤
Dec 25 Vue.js
vue 动态创建组件的两种方法
Dec 31 Vue.js
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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
ThinkPHP控制器详解
2015/07/27 PHP
PHP实现倒计时功能
2020/11/16 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
遗传算法之Python实现代码
2017/10/10 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
python生成ppt的方法
2018/06/07 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
python制作抽奖程序代码详解
2021/01/15 Python
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
建筑工程技术应届生自荐信
2013/09/27 职场文书
家属慰问信
2015/02/14 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
演讲比赛主持词
2015/06/29 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
SpringRetry重试框架的具体使用
2021/07/25 Java/Android
Hive常用日期格式转换语法
2022/06/25 数据库