用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 相关文章推荐
js判断浏览器的比较全的代码
Feb 13 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
node.js中的socket.io的广播消息
Dec 15 Javascript
JavaScript编写推箱子游戏
Jul 07 Javascript
jquery之别踩白块游戏的简单实现
Jul 25 Javascript
基于bootstrap写的一点localStorage本地储存
Nov 21 Javascript
ReactNative之FlatList的具体使用方法
Nov 29 Javascript
JS+canvas画一个圆锥实例代码
Dec 13 Javascript
Vue路由history模式解决404问题的几种方法
Sep 29 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
Nov 22 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 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
短波收音机简介
2021/03/01 无线电
用PHP实现将GB编码转换为UTF8
2006/11/25 PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
php发送与接收流文件的方法
2015/02/11 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
PHP微商城开源代码实例
2019/03/27 PHP
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
Python实现多线程的两种方式分析
2018/08/29 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
技术总监的工作职责
2013/11/13 职场文书
简历自我评价怎么写好呢?
2014/01/04 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python