用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 相关文章推荐
ajax无刷新动态调用股票信息(改良版)
Nov 01 Javascript
window.js 主要包含了页面的一些操作
Dec 23 Javascript
老鱼 浅谈javascript面向对象编程
Mar 04 Javascript
javascript实现yield的方法
Nov 06 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
javascript实现checkBox的全选,反选与赋值
Mar 12 Javascript
关于angularJs指令的Scope(作用域)介绍
Oct 25 Javascript
vue.js绑定class和style样式(6)
Dec 09 Javascript
修改npm全局安装模式的路径方法
May 15 Javascript
js实现GIF图片的分解和合成
Oct 24 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 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树形菜单代码
2014/11/19 PHP
php截取字符串函数分享
2015/02/02 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
python3.7添加dlib模块的方法
2020/07/01 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
水果花束:Fruit Bouquets
2017/12/20 全球购物
银行贷款承诺书
2014/03/29 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python