用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中Location使用详解
May 12 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
Mongoose实现虚拟字段查询的方法详解
Aug 15 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
Aug 24 Javascript
在vue中使用vue-echarts-v3的实例代码
Sep 13 Javascript
使用Node.js写一个代码生成器的方法步骤
May 10 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
May 26 Javascript
使用Vue实现简单计算器
Feb 25 Javascript
原生js实现的观察者和订阅者模式简单示例
Apr 18 Javascript
Electron实现应用打包、自动升级过程解析
Jul 07 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
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
PHP里的单例类写法实例
2015/06/25 PHP
php时间函数用法分析
2016/05/28 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
js实现九宫格布局效果
2020/05/28 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
使用python为mysql实现restful接口
2018/01/05 Python
python 产生token及token验证的方法
2018/12/26 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
Python连接mysql方法及常用参数
2020/09/01 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
初入社会应届生求职信
2013/11/18 职场文书
公司业务员岗位职责
2014/03/18 职场文书
英文请假条
2014/04/11 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
农村党员对照检查材料
2014/09/24 职场文书
2016七夕情人节感言
2015/12/09 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
详解Vue router路由
2021/11/20 Vue.js
Python 图片添加美颜效果
2022/04/28 Python