js实现一键复制功能


Posted in Javascript onMarch 16, 2017

项目描述:最近做一个移动端活动页面,用户抽奖后会生成一个兑换码,为了优化用户体验,需要做一个复制按钮,能够一键复制兑换码。

项目需求: 兼容移动端所有主流浏览器。并且做为安卓和IOS的H5页面。

目前能够实现复制功能的方法有以下几种:

  1. execCommand("copy");
  2. clipboardData;
  3. ZeroClipboard.js

1.execCommand:是doucment对象的方法,可以实现浏览器菜单的很多功能,如保存文件,打开新文件,撤销,复制,等等。可以更好的完成文本编辑

有如下用法:

【全选】

格式:document.execCommand("SelectAll");

【打开】

格式:document.execCommand("Open");

【另存为】

格式:document.execCommand("SaveAs");

【打印】

格式:document.execCommand("print");

【剪切】

格式:document.execCommand("Cut","false",null);

【删除】

格式:document.execCommand("Delete","false",null);

【改变文本字体】

格式:document.execCommand("FontName","false",sFontName);

【改变字体大小】

格式:document.execCommand("FontSize","false",sSize|iSize);

【使绝对定位的元素可拖动】

格式:document.execCommand("2D-Position","false","true");

【复制】

格式:document.execCommand("Copy","false",null);

等等

应用实例:

HTML:

<input onclick="copy()" value="你好.要copy的内容!">

js代码:

function copy(){
 var Url2=document.getElementById("js-copy-text");
 Url2.select(); // 选择对象
 try{
  if(document.execCommand('copy', false, null)){
   document.execCommand("Copy");
   alert("已复制好,可贴粘。");
  } else{
   alert("复制失败,请手动复制");
  }
  } catch(err){
   alert("复制失败,请手动复制");
  }
}

注意:经测试该方法,PC端IE需要手动设置权限,其他浏览器均支持,M端很少浏览器支持;

2. clipboardData:对象提供了对剪贴板的访问

clipboardData有三个方法:

  1. clearData(sDataFormat)删除剪贴板中指定格式的数据;
  2. clearData(sDataFormat)getData(sDataFormat)从剪贴板中获取制定格式的数据;
  3. clearData(sDataFormat)setData(sDataFormat,sData)给剪贴板赋予指定格式的数据,返回true表示操作成功;

应用实例:

<input onclick="copy(this)" value="你好.要copy的内容!">

js代码:

function copy(){
 window.clipboardData.setData("text",document.getElementById("mytext").value);
 alert("The text is on the clipboard, try to paste it!");
}

注意:经测试该方法,仅在IE浏览器中有效;

在其他浏览器运行会报错:

firefox:TypeError: window.clipboardData is undefined

chrom: TypeError: Cannot read property 'setData' of undefined

经查资料:

MSDN https://msdn.microsoft.com/en-us/library/ms535220(v=vs.85).aspx
This object is available in script as of Microsoft Internet Explorer 5.
http://help.dottoro.com/ljctuhrg.php 也表示该方法出于对安全性的考虑,现在只支持IE:
In Firefox, Opera, Google Chrome and Safari, use the execCommand method with the 'Paste' command to retrieve and with the 'Copy' command to set the text content of the clipboard. Because of security restrictions, this method may not always work, see Example 2 for details.

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Javascript和Java获取各种form表单信息的简单实例
Feb 14 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 Javascript
Bootstrap导航条鼠标悬停下拉菜单
Jan 04 Javascript
JS加密插件CryptoJS实现的DES加密示例
Aug 16 Javascript
实例讲解JavaScript截取字符串
Nov 30 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
May 20 Javascript
JavaScript数值类型知识汇总
Nov 17 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
Feb 03 Javascript
viewer.js实现图片预览功能
Jun 24 Javascript
VUE递归树形实现多级列表
Jul 15 Vue.js
js判断PC端与移动端跳转
Dec 24 #Javascript
jquery编写日期选择器
Mar 16 #Javascript
jquery事件与绑定事件
Mar 16 #Javascript
Angular使用$http.jsonp发送跨站请求的方法
Mar 16 #Javascript
JSON与js对象序列化实例详解
Mar 16 #Javascript
JS对象的深度克隆方法示例
Mar 16 #Javascript
JS对象深度克隆实例分析
Mar 16 #Javascript
You might like
php正则表达式学习笔记
2015/11/13 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
JS 常用校验函数
2009/03/26 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
vue router demo详解
2017/10/13 Javascript
微信小程序实现留言板
2018/10/31 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
Python列表推导式的使用方法
2013/11/21 Python
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
python日志记录模块实例及改进
2017/02/12 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
Julep官网:美容产品和指甲油
2017/02/25 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
农民工工资承诺书范文
2014/03/31 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
600字作文之感受大自然
2019/11/27 职场文书
python中requests库+xpath+lxml简单使用
2021/04/29 Python
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL