简单实现兼容各大浏览器的js复制内容到剪切板


Posted in Javascript onSeptember 09, 2015

因为网站文章需要提供几个按钮,单击后实现复制文章内容到剪贴板。

在网上搜索了很多内容,发现都比较乱这里自己整理下,分享给大家

效果图如下:

简单实现兼容各大浏览器的js复制内容到剪切板

之前使用的是window.clipboardData.setData,只能支持IE和火狐。360浏览器、搜狗等浏览器,都泪崩。所以,研究了ZeroClipboard,尽量使用js代码写。

使用前先引用三个东西(没有提供上传附件,这里就不提供下载地址了,很常见,大家自己找度娘吧):

jquery-1.4.1.min.js   
ZeroClipboard.js  
ZeroClipboard.swf 

下面是最简单的实现了,做一下解释。

原理

把一个不可见的 Adobe Flash movie元素放到一个DOM元素上。用户点击那DOM元素时,其实点击的是那不可见的Adobe Flash movie元素,Flash代码来做将内容复制到剪切板的操作。

注意:如果用js模拟一个在那flash上的点击事件,并不能进行复制内容到剪贴板。原因是浏览器和flash的安全限制。

a标签就是一个按钮,你可以替换成图片等,但是id要和下面的clip.glue("copy_text");一致。

clip.setText(AddContent+ document.getElementById("id_div").innerText + AddContent);这一句的di_div就是要复制的Div的ID。这个ID可以是其他的标签的ID。想复制什么就写什么的ID。

其他的就原样复制。你需要改的,就是最上面两行,第一行就是需要复制的标签,一般你的网页里已经有了。只要给他设置个ID即可。那么第一行可以删掉。第二行就可以自由发挥,反正用超链接也好,图片也好,只要ID和下面的一样即可。

对于事先准备的三个文件,请上传到代码中所示的路径中。这个据说是在服务器运行才行,我直接上传服务器测试的

这里已经是最简化的代码了。网上的那些乱七八糟的,实在不忍直视,所以,做出来就及时和大家分享一下。如果本文章有问题要问,可以在博客留言。

 下面是实现的代码:

<div id="id_div">文本内容</div><br><a href='#' id="copy_text" title="以纯文本形式复制">复制文章纯文本内容</a><br>
<script type="text/javascript" src="/js/global/jquery-1.4.1.min.js"></script>
<script type="text/javascript" src="/js/global/ZeroClipboard.js"></script>
<script type="text/javascript">
var clip = null;
ZeroClipboard.setMoviePath("/js/global/ZeroClipboard.swf");
$(document).ready(function(){
    var AddContent = "\r\n本原创文章来源:C++技术网,阅读更多原创精品文章,欢迎访问C++技术网。\r\n";
  clip = new ZeroClipboard.Client();
  clip.setHandCursor(true);
  clip.setText(AddContent+ document.getElementById("id_div").innerText + AddContent);
  clip.glue("copy_text");
  clip.addEventListener("complete", function(){
    alert("文章纯文本内容已经复制到剪切板!");
  });
});
</script>
Javascript 相关文章推荐
jQuery 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
Jun 20 Javascript
用JavaScript修改CSS属性的代码
May 06 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
Jun 09 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
详解jQuery选择器
Dec 21 Javascript
jQuery中用on绑定事件时需注意的事项
Mar 19 Javascript
利用nginx + node在阿里云部署https的步骤详解
Dec 19 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
May 16 Javascript
VUE组件中的 Drawer 抽屉实现代码
Aug 06 Javascript
layui 上传文件_批量导入数据UI的方法
Sep 23 Javascript
javaScript Array api梳理
Mar 31 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
Sep 09 #Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
Sep 09 #Javascript
JS实现自动变换的菜单效果代码
Sep 09 #Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
Sep 09 #Javascript
JS实现自动变化的导航菜单效果代码
Sep 09 #Javascript
使用impress.js制作幻灯片
Sep 09 #Javascript
谈谈impress.js初步理解
Sep 09 #Javascript
You might like
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
js实现小星星游戏
2020/03/23 Javascript
python使用arp欺骗伪造网关的方法
2015/04/24 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
Python中logging日志库实例详解
2020/02/19 Python
QML用PathView实现轮播图
2020/06/03 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
在职研究生自我鉴定
2013/10/16 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
大型公益活动策划方案
2014/08/20 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
运动会宣传语
2015/07/13 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android