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 相关文章推荐
图片连续滚动代码[兼容IE/firefox]
Jun 11 Javascript
javascript parseInt 大改造
Sep 27 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
js实现身份证号码验证的简单实例
Feb 19 Javascript
超链接的禁用属性Disabled使用示例
Jul 31 Javascript
JavaScript中操作字符串小结
May 04 Javascript
JavaScript实现简单的四则运算计算器完整实例
Apr 28 Javascript
Angular在模板驱动表单中自定义校验器的方法
Aug 09 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
Nov 05 Javascript
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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
PHP编程与应用
2006/10/09 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
python进行文件对比的方法
2018/12/24 Python
Python删除n行后的其他行方法
2019/01/28 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python多线程正确用法实例解析
2020/05/30 Python
python合并多个excel文件的示例
2020/09/23 Python
用Python制作音乐海报
2021/01/26 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
中国央视网签名寄语
2014/01/18 职场文书
小学生成长感言
2014/01/30 职场文书
英语求职信范文
2014/05/23 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书