无需 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 相关文章推荐
解决自定义$(id)的方法与jquery选择器$冲突的问题
Jun 14 Javascript
JavaScript设计模式经典之工厂模式
Feb 24 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
Jun 12 Javascript
微信小程序 教程之引用
Oct 18 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
Apr 23 Javascript
详解基于vue的移动web app页面缓存解决方案
Aug 03 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 Javascript
ng-repeat指令在迭代对象时的去重方法
Oct 02 Javascript
js的对象与函数详解
Jan 21 Javascript
解析原来浏览器原生支持JS Base64编码解码
Aug 12 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
Jun 03 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动态生成JavaScript代码
2009/03/09 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
js DOM模型操作
2009/12/28 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
JS继承 笔记
2011/07/13 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
python中的reduce内建函数使用方法指南
2014/08/31 Python
解析Python中的异常处理
2015/04/28 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
python删除某个字符
2018/03/19 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python实现QQ批量登录功能
2019/06/19 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
关于美容院的活动方案
2014/08/14 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书