复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题)

  相信绝大多数人都遇到过这样的功能实现,“复制”或者“复制到剪贴板”这样的功能。但是由于各大浏览器的实现方案不一样,导致几乎没有统一的实现这样功能的方案。而被各大程序猿喜欢的jQuery也没有类似的方法或者函数来实现这一功能。包括博客园这样的技术博客区对代码的复制,也没有直接复制到剪贴板,需要用户自己去手动ctrl+c。如下:

  对于一般技术类的用户来说这没什么,但是对于那些非技术类的人来说,反而会觉得比较麻烦。因此从实用性和提高用户体验的角度出发,得给用户直接复制粘贴到剪切板的功能。今天介绍一个实现此功能的小插件,ZeroClipboard,同时兼讨论解决它在IE下不能使用的问题(我用的IE10)。

  1、下载jQuery,可自行百度谷歌。

  2、下载ZeroClipboard,Zero Clipboard的官方地址:http://zeroclipboard.org/,github地址:https://github.com/zeroclipboard/ZeroClipboard

  3、添加js库。

<script src="jQuery.js" type="text/javascript"></script>
<script src="ZeroClipboard.js" type="text/javascript"></script>
<script src="clip.js" type="text/javascript"></script><!-- 你测试或者使用的js -->

  4、html代码。

<a title="点击复制当前链接" href="javascript:void(0);" data-clipboard-text="粘贴内容" id="copy"></a>
<!-- 其中id用于js选择器使用,data-clipboard-text用于保存你要粘贴的内容-->

  5、JS代码

var client = new ZeroClipboard(document.getElementById("copy"));
client.on("ready", function(readyEvent) {
client.on("aftercopy", function(event) {
alert("复制成功,地址为: " + event.data["text/plain"]);
});
});

  好了,酱紫功能就完成了。效果如下:

  

当然了,我这里只是粘贴了我写死的内容,你完全可以根据你的需求来复制内容到剪贴板用户输入的内容或者其它内容。这你可以根据官方的API可以找到对应的使用方法。

  在各大浏览器包括谷歌浏览器、火狐以及一些国产的浏览器里测试都没问题。但是每次讨论到IE,问题就来了,当在IE浏览器(我用的IE10)打开的时候却出现了问题,点击没有效果。而谷歌里搜索也发现其他人也有类似的问题,不明觉厉。然后查看了IE实现复制到剪贴板的实现方法,并重新优化了下上面的JS代码,兼容了IE。修改过后的JS代码如下:

if(window.clipboardData){
//for IE
var copyBtn = document.getElementById("copy");
copyBtn.onclick = function(){
var text = $("#copy").attr("data-clipboard-text");
window.clipboardData.setData('text',text);
alert("复制成功,地址为: " + text);
}
}else{
var client = new ZeroClipboard(document.getElementById("copy"));
client.on("ready", function(readyEvent) {
client.on("aftercopy", function(event) {
alert("复制成功,地址为: " + event.data["text/plain"]);
});
});
}

  OK,搞定!现在在IE里也能正常使用了。效果如下:

  不过在IE中出于安全考虑,IE会提示用户是否允许访问剪贴板。

  以上所有代码仅写出了关键核心的部分,如有问题,欢迎交流吐槽!

复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题)的更多相关文章

  1. 支付宝红包口令自动复制到剪贴板脚本js,安卓,IOS通用版

    有客户找到涛舅舅,要求开发一个可以自动支付宝红包口令的js脚本,经过大量探索和优化,目前此脚本功能已经测试成功! 预期效果: 只要来访用户在当前网页的任意位置点击一下,支付宝红包口令即可复制到用户手机 ...

  2. html5: 复制到剪贴板 clipboard.js

    1.使用clipboard.min.js工具,引用此js 注意事项: IOS微信网页开发中,若使用此工具来开发复制功能,则需要在超链接/按钮上新增 onclick=" " 2.cl ...

  3. Js 之复制到剪贴板 clipboard.js

    一.下载 https://github.com/zenorocha/clipboard.js/archive/master.zip 二.Demo示例 <!DOCTYPE html> < ...

  4. 标签的增加、删除与复制,动态标签js不生效的解决

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 【原】js实现复制到剪贴板功能,兼容所有浏览器

    两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...

  6. 【转】js实现复制到剪贴板功能,兼容所有浏览器

    两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...

  7. 【转】js插件zClip实现复制到剪贴板功能

    相信这个功能大家平时上网经常能碰到,以前也没怎么留意怎么实现的,直到项目中需要. 网上一搜一大堆,单纯使用js方法也不是没有,但是由于各浏览器的安全机制不同,不是跨浏览器的.去看了几个常用的网站,都是 ...

  8. 使用ZeroClipboard解决跨浏览器复制到剪贴板的问题

    Zero Clipboard的实现原理Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是 Flash ,这样将需要的内容传入Flash,再通过Flas ...

  9. ZeroClipboard 复制到剪贴板

    使用 ZeroClipboard 可以简单的将内容复制到剪贴板,通过 Adobe Flash 和 JavaScript 来实现.“Zero” 意义为这个类库没有界面,界面需要由你来建立. 版本: Ze ...

随机推荐

  1. maven入门探讨

    java项目最恶心的一点莫过于需要使用大量的jar.每次引用jar的时候都要自己手动去各地寻找,然后导入到项目的指定文件夹当中最后还要添加Path.这无疑是一项工作量巨大的工作,同时如果控制不当就会提 ...

  2. git删除远程仓库的某次错误提交

    改日写git的各种本地恢复 今天不小心把一个分支合并到master上了,上网查了一下回复的方法,简单来说就是: 在本地 把远程的master分支删除再把reset后的分支内容给push上去 新建old ...

  3. zookeeper学习系列:二、api实践

    上一章我们知道zookeeper的简介,启动,设置节点以及结构性能.本小节我们来玩玩api,获取下数据. php版本: http://anykoro.sinaapp.com/2013/04/05/%E ...

  4. NOIP2014提高组 酱油记

    NOIP考到哪里我就写到哪里好了. 2014/10/12 初赛 下午两点半开始考,我两点就到了.然后看到了QYL,NYZ,CZR等大神,先Orz了再说. 考试开始前,发现考场竟然没几个我认识的,不是按 ...

  5. [转][C/C++] 怎样不用中间变量temp 实现两个数交换

    第一类方法也是常用的方法,通过多次的数值计算来完成交换,到现在知道的有下面三种: (1)加减法. a = a + b; b = a - b; a = a - b; 该方法可以交换整型和浮点型数值的变量 ...

  6. UDK:AdventureKit 攀爬系统

    [目标] AdventureKit攀爬系统 [思路] [步骤] 1 拷贝 2 设置config,UDKGame\Config\DefaultEngine.ini 添加包 [UnrealEd.Edito ...

  7. iOS开发UI篇—popoverController使用注意

    iOS开发UI篇—popoverController使用注意 一.设置尺寸 提示:不建议,像下面这样吧popover的宽度和高度写死. //1.新建一个内容控制器 YYMenuViewControll ...

  8. 烟草公司基于BPM的IT一体化变革

    广州烟草有限公司隶属于广东省烟草专卖局,中国烟草总公司统一领导.垂直管理.主要职能是负责广州市的烟草生产.经营企业和市场的专卖管理.成立20多年来,广州烟草致力于烟叶和卷烟的生产经营.多元化经营.技术 ...

  9. android 高效加载大图

    在写代码的时候就已经解释: /** * 计算samplesize的大小 * @param options 传一个BitmapFactory.Options 进去获取图片的大小和类型 * @param ...

  10. 1、android源代码下载及目录分析,和eclipser的跟踪

    1.在eclipse中跟踪源代码:假如对mainactivity.java里面的activity按Ctrl+鼠标左键(前提已经导入android源代码:方法1:在项目点击右键,然后找到properti ...