JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)


Posted in Javascript onJune 17, 2016

两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低。很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能会更大。成长以来,很多朋友也听说到不少激励自己上进的话,但不是每个人都能一直坚持做下来,其实,这个跟自己的性格以及周围的环境都有很大关系,只能说多找方法、条件给自己鼓励,不断提高对自己的要求,才有机会获得多一点的成就。

今年下半年打算在组内建个叫『移动开发指南』的站点,在网站框架搭建过程,有一个功能需要实现复制文本到剪贴板,相信这个功能很常用,但是对于不常写JS代码的我来说是一个比较大的挑战,回想以前做过的一个站点,使用window.clipboardData实现复制到剪贴板功能,也仅仅支持IE和FF浏览器,当时在百度找个几个方案,看不下去就放弃了,后来在代码中做了判断,如果不支持该属性,就直接alert:此功能不支持该浏览器,请手工复制文本框中内容,现在想想真是偷懒啊,嘿嘿,有没有人中枪啊~

alert("此功能不支持该浏览器,请手工复制文本框中内容");

现在网络上其实并没有比较详细讲解js实现复制到剪贴板功能,很多文章是千遍一律,对于需要使用复制到剪贴板功能的童鞋来说,是比较蛋疼的,今天给大家带来这块的分享,由于能力有限,有错误的地方还请大家多多指教~

相信很多使用wordpress搭建过站点的同学都知道它采用了jQuery,对jQuery大家并不陌生,使用起来非常简单,可惜jQuery本身并没有实现复制到剪贴板的功能,但或许它的API会有这个功能。这次我搭建的站点采用wordpress,花了点时间搜索jQuery复制到剪贴板的API,还真的有:jQuery ZeroClipboard ,于是使用它在wordpress简单实现了复制到剪贴板的功能。但是呢,jQuery ZeroClipboard原来是有个父亲大人,叫Zero Clipboard。

Zero Clipboard作为一个独立的js库,它利用 Flash 进行复制,需要两个文件:ZeroClipboard.js 和 ZeroClipboard.swf 。网络上有2个版本,实现原理都是使用flash进行复制,不知道原创是谁的,也可能一家子的2个兄弟,这个就不管了,只要我们自己做到尊重版权,表示问心无愧,今天给大家介绍的这个版本相对来说比较简单。

首先看下图是为使用Zero Clipboard后生成的flash对象,它能兼容的flash10及以下版本,兼容所有的浏览器:

Zero Clipboard的官方地址:http://zeroclipboard.org/,github地址:https://github.com/zeroclipboard/ZeroClipboard

使用它需要搭建服务器环境,可能有同学不太清楚,关于搭建服务器环境的,方法有很多,如xp或者win7系统自带的IIS,也可以使用xampp、appserv、APMServ等集成包,安装即可,搭建起来非常简单,这里不做介绍~

现在我们先使用独立的js库Zero Clipboard简单实现复制到剪贴板功能,demo如下:

<!DOCTYPE html>
<html>
<head>
<title>Zero Clipboard Test</title>
<meta charset="utf-8">
</head>
<body>
<!--

说明:

1.data-clipboard-target 输入要复制的对象的ID

-->
<button id="d_clip_button" class="my_clip_button" data-clipboard-target="fe_text"><b>复制到剪贴板</b></button>
<br/>
<textarea id="fe_text" cols="50" rows="3">输入需要复制的内容</textarea>
</body>
</html>
<script type="text/javascript" src="ZeroClipboard.js"></script>
<script type="text/javascript">
// 定义一个新的复制对象
var clip = new ZeroClipboard( document.getElementById("d_clip_button"), {
moviePath: "ZeroClipboard.swf"
} );
// 复制内容到剪贴板成功后的操作
clip.on( 'complete', function(client, args) {
alert("复制成功,复制内容为:"+ args.text);
} );
</script>

demo下载 (温馨提示:下载代码的同学,浏览demo时记得使用服务器环境,不然看不到效果的~)

上面代码注释中已经对Zero Clipboard的功能进行了介绍,需要了解更多的功能请到https://github.com/zeroclipboard/ZeroClipboard

接下来介绍jQuery ZeroClipboard

jQuery ZeroClipboard是在ZeroClipboard的基础上进行的改良,简称zClip,作为jQuery的API,jQuery ZeroClipboard也表现的非常简易操作,官方地址:http://www.steamdev.com/zclip/

使用前需引用2个js文件:jquery.js和jquery.zclip.js

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.zclip.js"></script>

现在我们使用jquery.zclip.js简单实现复制到剪贴板功能demo如下:

<!DOCTYPE html>
<html>
<head>
<title>ZeroClipboard Test</title>
<meta charset="utf-8">
<style type="text/css">
.line{margin-bottom:20px;}
/* 复制提示 */
.copy-tips{position:fixed;z-index:999;bottom:50%;left:50%;margin:0 0 -20px -80px;background-color:rgba(0, 0, 0, 0.2);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr=#30000000, endColorstr=#30000000);padding:6px;}
.copy-tips-wrap{padding:10px 20px;text-align:center;border:1px solid #F4D9A6;background-color:#FFFDEE;font-size:14px;}
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.zclip.js"></script>
</head>
<body>
<div class="line">
<h2>demo1 点击复制当前文本</h2>
<a href="#none" class="copy">点击复制我</a>
</div>
<div class="line">
<h2>demo2 点击复制表单中的文本</h2>
<a href="#none" class="copy-input">点击复制单中的文本</a>
<input type="text" class="input" value="输入要复制的内容" />
</div>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(){
/* 定义所有class为copy标签,点击后可复制被点击对象的文本 */
$(".copy").zclip({
path: "ZeroClipboard.swf",
copy: function(){
return $(this).text();
},
beforeCopy:function(){/* 按住鼠标时的操作 */
$(this).css("color","orange");
},
afterCopy:function(){/* 复制成功后的操作 */
var $copysuc = $("<div class='copy-tips'><div class='copy-tips-wrap'>☺ 复制成功</div></div>");
$("body").find(".copy-tips").remove().end().append($copysuc);
$(".copy-tips").fadeOut(3000);
}
});
/* 定义所有class为copy-input标签,点击后可复制class为input的文本 */
$(".copy-input").zclip({
path: "ZeroClipboard.swf",
copy: function(){
return $(this).parent().find(".input").val();
},
afterCopy:function(){/* 复制成功后的操作 */
var $copysuc = $("<div class='copy-tips'><div class='copy-tips-wrap'>☺ 复制成功</div></div>");
$("body").find(".copy-tips").remove().end().append($copysuc);
$(".copy-tips").fadeOut(3000);
}
});
});
</script>

demo下载 (温馨提示:下载代码的同学,浏览demo时记得使用服务器环境,不然看不到效果的~)

上面代码中结合jQuery的操作节点的功能,出色的发挥jquery.zclip.js的作用,如复制前后的操作,动态插入节点,也可见jquery.zclip.js的强大之处,使用起来是非常简单。需要深入了解更多jquery.zclip.js的功能请到http://www.steamdev.com/zclip/

从上面独立的js库ZeroClipboard.js和jquery.zclip.js 都是采用flash实现实现复制到剪贴板的功能,可以看出,使用ZeroClipboard.js带来功能相对比较少,不过它是独立的库,文件比较小,而使用jquery.zclip.js后的功能是比较丰富,不过对于不使用jQuery框架的站点来说,采用jquery.zclip.js是比较浪费宽带。使用哪种复制方式还是得看产品的具体定位情况~

以上所述是小编给大家介绍的JS实现复制内容到剪贴板功能兼容所有浏览器(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
mailto的使用技巧分享
Dec 21 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
比较常见的javascript中定义函数的区别
Nov 09 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
Sea.JS知识总结
May 05 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
Jul 09 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
JavaScript中set与get方法用法示例
Aug 15 Javascript
Vue-cli打包后如何本地查看的操作
Sep 02 Javascript
JavaScript 实现轮播图特效的示例
Nov 05 Javascript
js实现简单商品筛选功能
Feb 02 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
Jun 17 #Javascript
JavaScript简单实现弹出拖拽窗口(二)
Jun 17 #Javascript
JS中递归函数
Jun 17 #Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
Jun 17 #Javascript
JavaScript简单实现弹出拖拽窗口(一)
Jun 17 #Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
Jun 17 #Javascript
聊一聊JS中this的指向问题
Jun 17 #Javascript
You might like
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
php批量修改表结构实例
2017/05/24 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
ES6入门教程之Class和Module详解
2017/05/17 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
Python 实现12306登录功能实例代码
2018/02/09 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
python微信好友数据分析详解
2018/11/19 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
Python3的socket使用方法详解
2020/02/18 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
美国轮胎网站:Priority Tire
2018/11/28 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
超市端午节活动方案
2014/01/23 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
高效课堂标语
2014/06/26 职场文书
2014年中秋寄语
2014/08/11 职场文书
委托收款证明
2015/06/23 职场文书
申请吧主发表的感言
2015/08/03 职场文书
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
python状态机transitions库详解
2021/06/02 Python
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技