用js将内容复制到剪贴板兼容浏览器


Posted in Javascript onMarch 18, 2014

若想通过js将内容复制到剪贴板,本来不难,可是若考虑到浏览器的兼容性问题,就变的有点麻烦,使用jquery-zclip复制是一个不错的选择,借助flash实现浏览器的兼容。原理就不细讲了,下面说下如何实现。

比如我的html代码如下:

<div class="buttonBox"> 
<code rel="1"><span id="id_1">要复制的内容1</span></code> 
<code rel="2"><span id="id_2">要复制的内容2</span></code> 
<code rel="3"><span id="id_3">要复制的内容3</span></code> 
</div>

js文件总共需要两个,jquery就不用说了,再就是jquery-zclip.js和ZeroClipboard.swf,这两个文件可以在官方网站上下载,地址如下:http://www.steamdev.com/zclip/

生成复制按钮的js如下

<script type="text/javascript"> 
$(function(){ 
$('code').each(function(){ 
var self = $(this); 
var id = self.attr('rel'); 
var copy = $('<span>复制</span>').appendTo(self).zclip({ 
'path':'/static/admin/js/ZeroClipboard.swf',//这里写自己存在的地址 
'afterCopy':function(){ 
alert('获取对应代码的地址已经复制到剪切板,可以使用ctrl+v粘贴'); 
}, 
'copy':function(){ 
return $('#id_'+id).text();//注意这里,若是div span等使用text(),若是input等,使用val(),这个支持的不是很好 
} 
}); 
}); 
}); </script>

这样就能时间跨浏览器的复制了,本来不是很难的事情,我做测试的时候也挺顺利的,可以当我把他放到项目中就出问题了,复制按钮产生位置没有flash,只有文字,后来发现,其实flash生成了,但是没有在文字所在的位置,估计和我项目后台使用的是iframe结构有关系,估计这是这个插件的一个bug吧,后来查了很多资料,有的人说,需要改下代码就可以了,后来我改了,下,果然就可以了

需要修改的代码如下

getDOMObjectPosition: function (obj, stopObj) { 
// get absolute coordinates for dom element 
var info = { 
left: 0, 
top: 0, 
width: obj.width ? obj.width : obj.offsetWidth, 
height: obj.height ? obj.height : obj.offsetHeight 
}; if (obj && (obj != stopObj)) { 
//info.left += obj.offsetLeft; //修改前 
//info.top += obj.offsetTop; //修改前 
jpos = $(obj).position(); //修改后 
info.left += jpos.left; //修改后 
info.top += jpos.top; //修改后 
} 
return info; 
}

其实这和这个插件的原理有关系,他就将一个透明的flash覆盖到按钮的上面,若他们两个不重合,就出现了上面的问题。
Javascript 相关文章推荐
Javascript中的Split使用方法与技巧
Mar 09 Javascript
js类中获取外部函数名的方法
Aug 19 Javascript
非主流的textarea自增长实现js代码
Dec 20 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
JS根据变量保存方法名并执行方法示例
Apr 04 Javascript
JS JQUERY实现滚动条自动滚到底的方法
Jan 09 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
Sep 06 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
Oct 27 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
Jan 18 Javascript
vue项目常用组件和框架结构介绍
Dec 24 Javascript
js中数组常用方法总结(推荐)
Apr 09 Javascript
javascript页面上使用动态时间具体实现
Mar 18 #Javascript
JS调用页面表格导出excel示例代码
Mar 18 #Javascript
javascript:window.open弹出窗口的位置问题
Mar 18 #Javascript
js判断iframe内的网页是否滚动到底部触发事件
Mar 18 #Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
Mar 18 #Javascript
JS判断字符串长度的5个方法(区分中文和英文)
Mar 18 #Javascript
file控件选择上传文件确定后触发的js事件是哪个
Mar 17 #Javascript
You might like
19个Android常用工具类汇总
2014/12/30 PHP
js比较和逻辑运算符的介绍
2013/03/10 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
javascript中new关键字详解
2015/12/14 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Django中的文件的上传的几种方式
2018/07/23 Python
Python 处理图片像素点的实例
2019/01/08 Python
python从子线程中获得返回值的方法
2019/01/30 Python
python搜索包的路径的实现方法
2019/07/19 Python
python dataframe NaN处理方式
2019/12/26 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
python中加背景音乐如何操作
2020/07/19 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
英文版销售经理个人求职信
2013/11/20 职场文书
期终自我鉴定
2014/02/17 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
企业员工集体活动方案
2014/08/17 职场文书
杭白菊导游词
2015/02/10 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
钱学森观后感
2015/06/04 职场文书