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 相关文章推荐
JS 事件绑定函数代码
Apr 28 Javascript
实现web打印的各种方法介绍及实现代码
Jan 09 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
Javascript显示和隐藏ul列表的方法
Jul 15 Javascript
ES6的新特性概览
Mar 10 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
详解Angular2组件之间如何通信
Jun 22 Javascript
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
vue组件详解之使用slot分发内容
Apr 09 Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 Javascript
详解JavaScript原型与原型链
Nov 16 Javascript
swiperjs实现导航与tab页的联动
Dec 13 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
用PHP来写记数器(详细介绍)
2006/10/09 PHP
简单的PHP图片上传程序
2008/03/27 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
JavaScript浏览器选项卡效果
2010/08/25 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python从入门到精通(DAY 2)
2015/12/20 Python
python简单实现获取当前时间
2016/08/27 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python从子线程中获得返回值的方法
2019/01/30 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
南京迈特望C/C++面试题
2012/07/09 面试题
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
护士实习鉴定范文
2013/12/22 职场文书
五年级语文教学反思
2014/01/30 职场文书
集中整治工作方案
2014/05/01 职场文书
房贷收入证明范本
2015/06/12 职场文书
Javascript的promise,async和await的区别详解
2022/03/24 Javascript