现在不使用ZeroClipboard我们也能实现复制功能(转)
现在不使用ZeroClipboard我们也能实现
首先,我们保证页面结构不变,但不在引入ZeroClipboard插件:
1 <input type="text" name="" id="J_TextIn" value="Copy Test.">
2 <input type="button" value="Copy" id="J_DoCopy">
然后,我们使用 document.execCommamd来对内容进行复制:
(function(){
 2     var btn = document.getElementById('J_DoCopy'),
 3         text = document.getElementById('J_TextIn');
 4     btn.onclick = function(){
 5         var transfer = document.getElementById('J_CopyTransfer');
 6         if (!transfer) {
 7             transfer = document.createElement('textarea');
 8             transfer.id = 'J_CopyTransfer';
 9             transfer.style.position = 'absolute';
10             transfer.style.left = '-9999px';
11             transfer.style.top = '-9999px';
12             document.body.appendChild(transfer);
13         }
14         transfer.value = text.value;
15         transfer.focus();
16         transfer.select();
17         document.execCommand('Copy', false, null);
18     };
19 })();
接着,我们在浏览器中浏览,和使用ZeroClipboard时一样的去操作,效果是一样的。但是,这段代码的正确执行是有限制的,因为 document.execCommand 在Chrome中支持的比较晚,所以要求Chrome版本必须是43及以后。
最后,再补充说明一下,使用 document.execCommand 来实现复制内容时,过渡被复制内容的 textarea 标签(即:动态创建的那个textarea标签),在复制可输入区域(input:text,textarea)的内容时并不是必须的,可以直接简化为:
 1 (function(){
 2     var btn = document.getElementById('J_DoCopy'),
 3         text = document.getElementById('J_TextIn');
 4     btn.onclick = function(){
 5         text.focus();
 6         text.select();
 7         document.execCommand('Copy', false, null);
 8         text.blur();
 9     };
10 })();
考虑到实际使用中,我们可能需要复制一些非编辑区域提供的内容(比如:一个a标签的链接地址等),所以增加了一个过渡的texearea,似乎更保险,更灵活一些。
此外,我再测试过程中,曾试图将过渡的那个textarea设置为不可见的 visibility:hidden; ,却发现复制功能失效了,所以这里需要注意一下...
现在不使用ZeroClipboard我们也能实现复制功能(转)的更多相关文章
- 兼容多浏览器的网页复制插件(ZeroClipboard)
		前言: 常规利用JS编写的网页复制功能是最简单的方法,但是只对IE有效,无法做到兼容其它浏览器,对其他浏览器也就只能弹窗提示用户手动复制了. <script type="text/ja ... 
- zeroclipboard浏览器复制插件使用记录
		一个简单例子: <html> <body> <button id="copy-button" data-clipboard-text="Co ... 
- ZeroClipboard跨浏览器复制粘贴
		<!DOCTYPE html> <html> <head> <title>ZeroClipboard跨浏览器复制粘贴</title> < ... 
- 使用ZeroClipboard解决跨浏览器复制到剪贴板的问题
		Zero Clipboard的实现原理Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是 Flash ,这样将需要的内容传入Flash,再通过Flas ... 
- ZeroClipboard 复制到剪贴板
		使用 ZeroClipboard 可以简单的将内容复制到剪贴板,通过 Adobe Flash 和 JavaScript 来实现.“Zero” 意义为这个类库没有界面,界面需要由你来建立. 版本: Ze ... 
- ZeroClipboard – 轻松实现复制文本到剪贴板功能
		ZeroClipboard 库提供了一种把文本复制到剪贴板的简单方法.Zero 表示该库是不可见的,用户界面则完全取决于你. 该库完全兼容 Flash Player 10.0.0 或以上版本,这就要求 ... 
- ZeroClipboard / jquery.zclip.min.js跨浏览器复制插件使用中遇到的问题解决
		之前写过一个淘宝优惠券连接PC端转手机端连接的小工具,当时写到将转换好的url复制到剪切板这块时解决了IE和火狐,就是没办法搞定Chrome,知道可以通过flash搞定,但是觉得太麻烦没有仔细研究. ... 
- 【ZeroClipboard is not defined】的解决方法
		参考:http://www.cnblogs.com/jfw10973/p/3921899.html https://github.com/zeroclipboard/zeroclipboard 近期该 ... 
- ZeroClipboard 插件实现文本复制到剪贴板
		ZeroClipboard 的官网 点这里,github地址 点这里. 事例如下: 在引入 ZeroClipboard.js 之后, <button id="clip_button&q ... 
随机推荐
- ActiveMQ(5.10.0) - Wildcards and composite destinations
			In this section we’ll look at two useful features of ActiveMQ: subscribing to multiple destinations ... 
- IIS部署网站局域网内无法访问
			今天在局域网发布一个网站时遇到了个问题,在本机上可以访问,但局域网内其他机子访问此IP地址时无法显示,这个问题以前也遇到过,现在总结一下处理方法 检查两个方面: IIS网站身份验证 在IIS中选择要发 ... 
- HDOJ2030汉字统计
			汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ... 
- 【Cocos2d入门教程二】Cocos2d-x基础篇
			上一章已经学习了环境的搭建.这一章对基础概念进行掌握.内容大概有: 1.导演 2.场景 3.节点 4.层 4.精灵 1.导演(Director) 导演存在的主要作用: a.环境设定(帧率 初始化ope ... 
- [盈利指导] [原创]五蕴皆空:App推广干货,排名数据分析优化效果
			App盈利交流论坛版主第一帖2015年3月份,在百度上了一款赛车类游戏(不说什么名字了怕被打包),后台起名叫002,刚开始上的时候一天只有几元钱,但是游戏还是倾注了不少心血的,觉得不甘心, ... 
- 教您如何使用SQL中的SELECT LIKE like语句
			LIKE语句在SQL有着不可替代的重要作用,下文就将为您介绍SQL语句中SELECT LIKE like的详细用法,希望对您能有所帮助. LIKE语句的语法格式是:select * from 表名 w ... 
- MySQL中用户授权/删除授权的方法
			用户授权方法 你可以通过发出GRANT语句增加新用户: 代码如下 复制代码 shell> mysql --user=root mysql mysql> GRANT ALL PRIVILE ... 
- ASP.NET实现折线图的绘制
			用到.Net中绘图类,实现折线图的绘制,生成图片,在页面的显示,代码如下: /// <summary> /// 获取数据 /// strChartName:图名称: /// yName:纵 ... 
- LINQ(LINQ to Entities)
			LINQ to Entities 是 LINQ 中最吸引人的部分.它让你可以使用标准的 C# 对象与数据库的结构和数据打交道.使用 LINQ to Entities 时,LINQ 查询在后台转换为 S ... 
- (转)SQLSERVER表分区的介绍(二)
			分区函数和分区方案的创建和使用方法 具体设计过程如下: (1)首先创建一个名为partionTest的数据库.然后分别为数据库partionTest添加四个文件组,文件组名依次为FileGroup00 ... 
