ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)


Posted in Javascript onAugust 30, 2014

但是值得注意的是官方介绍中已明确表态说这个插件不支持ie6,下面将提供多实例化Zero Clipboard复制功能的实现及兼容ie6的写法!

先下载ZeroClipboard https://3water.com/jiaoben/24961.html

<style type="text/css">
 body { font-family:arial,sans-serif; font-size:9pt; }
 .copyit {text-align:center; border:1px solid #FD6001; background-color:#ED730B; margin:10px; padding:2px 5px; cursor:pointer; font-size:12px; border-radius:3px;}
 .copyit.hover { background-color:#FD6001;}.copyit.active { background-color:#d25102;}/*鼠标hover效果,实为调用setCSSEffects()方法*/
 .copy_info{width:260px;height:100px;border:1px solid #ccc;padding:5px;}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="/js/ZeroClipboard/ZeroClipboard.js"></script>
<div class="clip_container">
<textarea id="fe_text" cols=50 rows=5 class="copycnt">第1个被复制的内容!!!</textarea>
<b class="copyit">复制内容</b>
</div>
<br/>
<div class="clip_container">
<textarea id="fe_text" cols=50 rows=5 class="copycnt">第2个被复制的内容!!!</textarea>
<b class="copyit">复制内容</b>
</div>
<script type="text/javascript">
var clip = null;
function copyThis() {
	if($.browser.version==6.0){
		//针对ie6
		$('.copyit').bind("click",function(){
		var code=$(this).parents(".clip_container").find(".copycnt").text();
		window.clipboardData.setData("Text",code);
		alert('被复制的内容:\n'+code);
	  })
	  return;
	}
	ZeroClipboard.setMoviePath("http://img.3water.com/js/scripts/clipboard.swf'");//如果ZeroClipboard.js, ZeroClipboard.swf放在同一目录下,可省略这句;
	clip = new ZeroClipboard.Client();
	$('.copyit').mouseover( function() {
	 var code=$(this).parents(".clip_container").find(".copycnt").text();
	 clip.setText(code);
	 if (clip.div) {//已创建过包含flash的父层div,则鼠标hover时重新定位flash层的位置
		 //clip.receiveEvent('mouseout', null);
		 clip.reposition(this);
	 }else{
		clip.glue(this)};
	 //clip.receiveEvent('mouseover', null);
	} );
	clip.addEventListener( 'complete', function(client, text){
	 alert("被复制内容:\n"+text);
	});
}
copyThis();
</script>
<textarea style="width:300px;height:300px;">
粘贴复制的内容到这里试试!!
</textarea>

上面的实现方法,除了ie6使用window.clipboardData.setData来实现复制功能外,其它浏览器都用Zero Clipboard 插件来实现复制功能!

使用该插件时应注意的几点:

1、以上 ZeroClipboard.js, ZeroClipboard.swf需要放在同一路径下。如果不在同一路径,可使用ZeroClipboard.setMoviePath( “Flash路径” );来设置ZeroClipboard.swf 地址。

2、setCSSEffects() 方法的解析: 当鼠标移到按钮上或点击时,由于有Flash按钮的遮挡,所以复制按钮本身体的 css “:hover”, “:active” 等伪类可能会失效。setCSSEffects() 方法就是解决这个问题。首先我们需要将伪类改成类,比如:

.copyit:hover{

 border-color:#FF6633;

}

// 需要将":hover"改成下面的".hover"

.copyit.hover{

 border-color:#FF6633;

}

3、getHTML() 方法的解析:如果你想自己实例一个Flash ,不用Zero Clipboard的附着方法,那么这个方法就可以帮上忙了。它接受两个参数,分别为Flash的宽度和高度。返回的是Flash对应的 HTML 代码。例如:
var html = clip.getHTML( 150, 20 );

Javascript 相关文章推荐
js监听表单value的修改同步问题,跨浏览器支持
Dec 31 Javascript
JQuery 选择器 xpath 语法应用
May 13 Javascript
jQuery中setTimeout的几种使用方法小结
Apr 07 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
Oct 14 Javascript
JS实现给对象动态添加属性的方法
Jan 05 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
pm2 部署 node的三种方法示例
Oct 20 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
记一次用vue做的活动页的方法步骤
Apr 11 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
Sep 02 Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 Javascript
仿百度联盟对联广告实现代码
Aug 30 #Javascript
jQuery针对各类元素操作基础教程
Aug 29 #Javascript
jQuery事件用法实例汇总
Aug 29 #Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 #Javascript
jQuery动画特效实例教程
Aug 29 #Javascript
jQuery实用函数用法总结
Aug 29 #Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 #Javascript
You might like
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
js Calender控件使用详解
2015/01/05 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
如何完美的建立一个python项目
2020/10/09 Python
python中二分查找法的实现方法
2020/12/06 Python
管理专员自荐信
2014/01/26 职场文书
开门红主持词
2014/04/02 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
养牛场项目建议书
2014/05/13 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
单位政审意见范文
2015/06/04 职场文书
浅谈Python数学建模之整数规划
2021/06/23 Python
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
Python列表的索引与切片
2022/04/07 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android