无需 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 创建对象和构造类实现代码
Jul 30 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
Jan 06 Javascript
自动化测试读写64位操作系统的注册表
Aug 15 Javascript
vue双向绑定简要分析
Mar 23 Javascript
node中koa中间件机制详解
Aug 22 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
React Hooks的深入理解与使用
Nov 12 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
浅谈vue中组件绑定事件时是否加.native
Nov 09 Javascript
vuejs中父子组件之间通信方法实例详解
Jan 17 Javascript
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
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中SESSION使用中的一点经验总结
2012/03/30 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
Js sort排序使用方法
2011/10/17 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
python 编写简单网页服务器的实例
2018/06/01 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
如何定义TensorFlow输入节点
2020/01/23 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
告知书格式
2015/07/01 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
初中体育教学随笔
2015/08/15 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript