无需 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 相关文章推荐
Javascript attachEvent传递参数的办法
Dec 14 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
Jun 25 Javascript
贴近用户体验的Jquery日期、时间选择插件
Aug 19 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
Dec 03 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
ES6新特性之函数的扩展实例详解
Apr 01 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
Jan 18 jQuery
微信小程序 导入图标实现过程详解
Oct 11 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实现WEB动态网页静态
2006/10/09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
跟老齐学Python之类的细节
2014/10/13 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
Python调用Windows命令打印文件
2020/02/07 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
会计系毕业求职信
2014/08/07 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android