用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 相关文章推荐
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
JavaScript Memoization 让函数也有记忆功能
Oct 27 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
JavaScript实现点击文字切换登录窗口的方法
May 11 Javascript
Node.js事件驱动
Jun 18 Javascript
JavaScript中的闭包
Feb 24 Javascript
微信小程序 支付简单实例及注意事项
Jan 06 Javascript
为输入框加入数字js校验代码分享
Nov 02 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
Aug 25 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
Sep 21 Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 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 生成唯一id的几种解决方法
2013/03/08 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
js opener的使用详解
2014/01/11 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
Python3基础之条件与循环控制实例解析
2014/08/13 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
Python面向对象之Web静态服务器
2019/09/03 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
sort命令的作用和用法
2013/08/25 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
行政助理的职责
2013/11/14 职场文书
转预备党员政审材料
2014/02/06 职场文书
班班通项目实施方案
2014/02/25 职场文书
获奖感言一句话
2015/07/31 职场文书
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技