无需 Flash 使用 jQuery 复制文字到剪贴板


Posted in Javascript onApril 26, 2016

如果在网上找一个关于如何将一段特定的文本拷贝到剪贴板的解决方案,最可能的结果就是使用Flash的方案来做这个事,虽然使用Flash可以很好地解决这个问题,但是这不是一个明智的想法,因为这个产品最终会消失或者至少是浏览器不再提供支持,因此这个解决方案是没有未来的。虽然可以使用jQuery或者纯JavaScript,甚至完全自己写,但是当有人已经创建了一个解决方案,那么为什么还要重复发明轮子呢?让我们一起看看Clipboard.js吧。

Clipboard.js删除了Flash组件并且优雅地解决了这个问题,需要做的只是引入其脚本,在HTML标签上赋一个“data-clipboard-target”属性然后写一小段JavaScript片段。为了演示假定有一个货币转换应用,在一个文本框中输入数值时同时将兑换结果显示在另一个文本框中,当点击文本框时,会触发事件将其复制到剪贴板然后显示一条消息。 无需 Flash 使用 jQuery 复制文字到剪贴板

下面是我的实现。

假如这是你的文本框。(我使用MVC框架创建我的应用程序)

<divclass="row"><divclass="col-md-6">From<divclass="input-group">
<divclass="input-group-addon">$</div>
@Html.EditorFor(model=>model.AmountFrom,new{htmlAttributes=new{@class="form-controlinput-largest",@step="0.01",@type="number"}})
</div></div><divclass="col-md-6">To<divclass="input-group"><divclass="input-group-addon">$
</div><inputtype="text"id="AmountTo"value="@Model.AmountTo"class="form-controlinput-largest"readonlydata-clipboard-action="copy"data-clipboard-target="#AmountTo"/>
</div>
</div>
</div>

你有没有注意到我有一个 AmountTo和 一个AmountFrom,AmountTo是输入AmountFrom 是输出 ,当我们点击这个的时候其值就会传给剪切板。这个神奇的事情发生在属性“data-clipboard-target”里面。

我们也添加一个消息框用来显示拷贝动作消息

<divclass="row">
<divclass="col-md-6"><br/>
<spanid="messageBox"class="text-success"style="display:block;text-align:center"></span></div></div>

到这里就是你所关心的HTML部分。现在让我们去看JavaScript/jQuery 部分

<scriptsrc="~/Scripts/clipboard.min.js">
</script>
<script>varclipboard=newClipboard('#AmountTo');
clipboard.on('success',function(e){$("#messageBox").text("AmountSuccessfullyCopied!").show().fadeOut(2000);e.clearSelection();});clipboard.on('error',function(e){$("#messageBox").text("ErrorCopyingAmount").show().fadeOut(2000);});$('#AmountFrom').click(function(){$("#AmountFrom").val("");});
</script>

至此,会发现我们只是引入了clipoard.js,如果实例化Clipboard成功,然后会给事件赋予一些动作,否则它会触发一个错误,是这样吧?这一切都很好,它能兼容所有最新的浏览器,除了IE,它会给出下面这样的一个消息。

无需 Flash 使用 jQuery 复制文字到剪贴板

如果希望看一下实际的效果,这是一个JSFiddle示例。

接下来就是抓取剪贴板的数据然后当点击时自动地粘贴到一个文本框,至此,看上去浏览器因为一个安全上的风险会阻止它,但是我会尝试找到甚至做出一个方案,因此大家还得继续关注。

Javascript 相关文章推荐
jQuery创建插件的代码分析
Apr 14 Javascript
JavaScript判断密码强度(自写代码)
Sep 06 Javascript
javascript数组去重方法汇总
Apr 23 Javascript
Jquery 分页插件之Jquery Pagination
Aug 25 Javascript
简单分析javascript中的函数
Sep 10 Javascript
JS鼠标3次点击事件实现代码及扩展思路
Sep 12 Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 Javascript
Vue $emit $refs子父组件间方法的调用实例
Sep 12 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
Sep 29 Javascript
深入解析ES6中的promise
Nov 08 Javascript
超轻量级的js时间库miment使用解析
Aug 02 Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 Javascript
JavaScript事件处理的方式(三种)
Apr 26 #Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 #Javascript
jQuery siblings()用法实例详解
Apr 26 #Javascript
JQuery插件Marquee.js实现无缝滚动效果
Apr 26 #Javascript
Angular.js回顾ng-app和ng-model使用技巧
Apr 26 #Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
Apr 26 #Javascript
Bootstrap网格系统详解
Apr 26 #Javascript
You might like
PHP的FTP学习(二)[转自奥索]
2006/10/09 PHP
php win下Socket方式发邮件类
2009/08/21 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
浅析js封装和作用域
2013/07/09 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
高中数学教师求职信
2013/10/30 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
网上开店必备创业计划书
2014/01/26 职场文书
消防宣传口号
2014/06/16 职场文书
ktv好的活动方案
2014/08/15 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python