在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 相关文章推荐
解析js如何获取当前url中的参数值并复制给input
Jun 23 Javascript
纯文字版返回顶端的js代码
Aug 01 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
Nov 29 Javascript
javascript获取当前鼠标坐标的方法
Jan 10 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
Mar 01 Javascript
fastclick插件导致日期(input[type=&quot;date&quot;])控件无法被触发该如何解决
Nov 09 Javascript
基于Javascript实现倒计时功能
Feb 22 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
Jun 24 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
JavaScript常用工具函数大全
May 06 Javascript
如何实现小程序与小程序之间的跳转
Nov 04 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之第五天
2006/10/09 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
python简单的三元一次方程求解实例
2020/04/02 Python
装修五一活动策划案
2014/01/23 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
有关环保的标语
2014/06/13 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
药店采购员岗位职责
2014/09/30 职场文书
个人政治思想总结
2015/03/05 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
Springboot中如何自动转JSON输出
2022/06/16 Java/Android