用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全部源代码
May 04 Javascript
js类中获取外部函数名的方法
Aug 19 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
Dec 27 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
Sep 13 Javascript
angularJS 中input示例分享
Feb 09 Javascript
Js面试算法详解
Apr 08 Javascript
vue获取验证码倒计时组件
Aug 26 Javascript
JavaScript实现放大镜效果代码示例
Apr 29 Javascript
纯JS实现五子棋游戏
May 28 Javascript
解决vue scoped html样式无效的问题
Oct 24 Javascript
node.js爬虫框架node-crawler初体验
Oct 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将向Java靠拢
2006/10/09 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
python的即时标记项目练习笔记
2014/09/18 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
python实现简易版计算器
2020/06/22 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
python如何随机生成高强度密码
2020/08/19 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
.net笔试题
2014/03/03 面试题
创建服务型党组织实施方案
2014/02/25 职场文书
2014年会策划方案
2014/05/11 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL