ZeroClipboard.js使用一个flash复制多个文本框


Posted in Javascript onJune 19, 2017

ZeroClipboard.js是一个支持复制和粘贴的JavaScript插件,目前官方已经到2.x的版本了,但不支持IE9以下的浏览器,而如果要兼容,则可以使用1.x的版本,我使用的是最开始的一个版本:1.0.7的。该版本支持IE7和IE8,今天主要介绍如何使用一个flash支持多个复制文本。

一般我们需要复制一个地方的时候,大多都使用下面这个代码新建一个对象:

<div id="J_pop_share">
  <input id="J_video_iframe1" value="<iframe src="http://caibaojian.com/book/"></iframe>" />
  <button id="J_copy_btn1">复制</button>
</div>

单个:

var clip = null;//ZeroClipboard.Client对象 
var current_id = null;//当前所在的文本元素id 
//指定ZeroClipboard.swf位置
ZeroClipboard.setMoviePath(location.protocol+"//club.pcauto.com.cn/js/ZeroClipboard.swf"); 
clip = new ZeroClipboard.Client();//创建ZeroClipboard.Client对象 
clip.setHandCursor(true);//鼠标移动到元素上之后显示手型 
clip.glue('J_copy_btn1','J_pop_share');
clip.setText($('#J_video_iframe1').val());
//添加复制成功之后的操作 
clip.addEventListener('complete', function() { 
  alert('复制成功'); 
});

如果有多个的话,是不是需要新建四个flash对象呢?可能没尝试过的人会这么做,这篇文章分享另外一种做法,就是在上面这个flash的基础上,当移动到另外一个按钮时,改变flash的位置和复制的文本。

多个文本的HTML代码:

<div id="J_pop_share">
  <div>
    <input id="J_video_iframe1" value="<iframe src="http://caibaojian.com/book/"></iframe>" />
    <button id="J_copy_btn1" class="btn-copy-text">复制</button>
  </div>
  <div>
    <input id="J_video_iframe2" value="<iframe src="http://caibaojian.com/book/"></iframe>" />
    <button id="J_copy_btn2" class="btn-copy-text">复制</button>
  </div>
  <div>
    <input id="J_video_iframe3" value="<iframe src="http://caibaojian.com/book/"></iframe>" />
    <button id="J_copy_btn3" class="btn-copy-text">复制</button>
  </div>
  <div>
    <input id="J_video_iframe4" value="<iframe src="http://caibaojian.com/book/"></iframe>" />
    <button id="J_copy_btn4" class="btn-copy-text">复制</button>
  </div>
</div>

javascript代码:在上面js的基础上,加上下面这个代码

//上面的代码
$(".btn-copy-text").each(function(i){
  var index =i+1;
  $(this).on('mouseover',function(){
    var button_id = $(this).attr('id');//复制div的id 
    //var text_id = button_id+'_text';//要复制的元素id 
    var text_id = 'J_video_iframe'+(index);
    move_swf(text_id , button_id); 
  }); 
}); 

//移动浮动flash div到指定的地方,从而只需要使用一个flash即可在多个地方实现复制功能 
function move_swf(text_id,button_id) { 
  //重新指定flash浮动div位置,用reposition 
  clip.reposition(button_id, 'J_pop_share');
  clip.setText($('#'+text_id).val()); 
}

在使用ZeroClipboard.js时,可能会出现复制不起作用或者其它诡异的bug,例如我今天在IE中,由于内容是放在弹窗里面,复制第一个是可以的,但第二个则会报错,提示“没有这个对象”,调试了好久,始终无法解决,后来不隐藏弹窗,却不会报错,所以,我觉得应该是flash隐藏和显示有关,把弹窗隐藏改用绝对定位加left:-9999px,显示的时候,再定位正确的left值就不会报错了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 常用函数库详解
Oct 21 Javascript
JSQL 基于客户端的成绩统计实现方法
May 05 Javascript
分页栏的web标准实现
Nov 01 Javascript
JS操作Cookies包括(读取添加与删除)
Dec 26 Javascript
php 中序列化和json使用介绍
Jul 08 Javascript
Javascript全局变量var与不var的区别深入解析
Dec 09 Javascript
javascript中错误使用var造成undefined
Mar 31 Javascript
jquery实现点击页面回到顶部
Nov 23 Javascript
巧用canvas
Jan 21 Javascript
javaScript 连接打印机,打印小票的实例
Dec 29 Javascript
Node.js中你不可不精的Stream(流)
Jun 08 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
Jun 21 Javascript
AngularJS的ng-click传参的方法
Jun 19 #Javascript
JavaScript队列函数和异步执行详解
Jun 19 #Javascript
JS检测是否可以访问公网服务器功能代码
Jun 19 #Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
Jun 19 #Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 #Javascript
深入理解AngularJs-scope的脏检查(一)
Jun 19 #Javascript
jQuery 实现双击编辑表格功能
Jun 19 #jQuery
You might like
用PHP开发GUI
2006/10/09 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
零基础学python应该从哪里入手
2020/08/11 Python
html5的localstorage详解
2017/05/09 HTML / CSS
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
最新创业融资计划书
2014/01/19 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
新春寄语大全
2014/04/09 职场文书
流动人口婚育证明
2014/10/19 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
nginx七层负载均衡配置详解
2022/07/15 Servers