用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 相关文章推荐
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
Mar 04 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
JS获取短信验证码倒计时的实现代码
May 22 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
Sep 11 Javascript
微信小程序实现发送验证码按钮效果
Dec 20 Javascript
详解如何使用router-link对象方式传递参数?
May 02 Javascript
js时间转换毫秒的实例代码
Aug 21 Javascript
jQuery实现简易QQ聊天框
Feb 10 jQuery
解决await在forEach中不起作用的问题
Feb 25 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.ini中文版
2006/10/09 PHP
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
numpy.where() 用法详解
2019/05/27 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
俄罗斯商务邀请函
2014/01/26 职场文书
检查接待方案
2014/02/27 职场文书
党支部公开承诺书
2014/03/28 职场文书
出纳担保书范文
2014/04/02 职场文书
计算机网络专业求职信
2014/06/05 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
2014年创卫工作总结
2014/11/24 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python