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的图片自动缩放的css跟js代码分享
Jan 21 Javascript
js中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
node.js正则表达式获取网页中所有链接的代码实例
Jun 03 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 Javascript
js判断鼠标位置是否在某个div中的方法
Feb 26 Javascript
微信小程序链接传参并跳转新页面
Nov 29 Javascript
JS实现的走迷宫小游戏完整实例
Jul 19 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
Sep 12 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 10 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
Apr 07 Javascript
vue使用过滤器格式化日期
Jan 20 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
dedecms中常见问题修改方法总结
2007/03/21 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
我未来的职业规划范文
2014/01/11 职场文书
报社实习生自荐信
2014/01/24 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
财务务虚会发言材料
2014/10/20 职场文书
2015年酒店工作总结
2015/04/28 职场文书
七一慰问简报
2015/07/20 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
python如何在word中存储本地图片
2021/04/07 Python
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
Python闭包的定义和使用方法
2022/04/11 Python
如何使用python包中的sched事件调度器
2022/04/30 Python