用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 相关文章推荐
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
Oct 21 Javascript
JavaScript 5 新增 Array 方法实现介绍
Feb 06 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
Jan 04 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
jQuery子元素过滤选择器用法示例
Sep 09 Javascript
什么是JavaScript注入攻击?
Sep 14 Javascript
JavaScript中的ajax功能的概念和示例详解
Oct 17 Javascript
node.js中express中间件body-parser的介绍与用法详解
May 23 Javascript
jQuery实现的弹幕效果完整实例
Sep 06 jQuery
使用express搭建一个简单的查询服务器的方法
Feb 09 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 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
php中取得URL的根域名的代码
2011/03/23 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
最实用的JS数组函数整理
2017/12/05 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python实现的各种排序算法代码
2013/03/04 Python
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
详解Python3 pandas.merge用法
2019/09/05 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
python用Configobj模块读取配置文件
2020/09/26 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
创业计划书六个要素
2013/12/26 职场文书
跳蚤市场口号
2014/06/13 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
罚款通知怎么写
2015/04/22 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL
Hive日期格式转换方法总结
2022/06/25 数据库