复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题


Posted in Javascript onJune 21, 2010

复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
但IE6两行JS代码就可以,IE7以上也差不多,只不过出来一个安全提示比较恶心,用户如果看到了,一定有怀疑;
再但就是Firefox、Chrome等根本就不让你复制;
记得以前网上有这方面的代码,找了一下,发现全部不能在firefox3.5以上的版本中应该,最后终于找到了一个,代码还相当相当的复杂,不太敢用。
最后,憋的实在没有办法了,查了查资料,自已写了一个:
主要的理解的几个点:
1、Firefox这些浏览器,出于安全考虑吧,直接是不让复制的;
2、在Flash中,可以用System.setClipboard(),把内容扔到剪贴板上,然后再让FLASH工作在Firefox下;
3、在Flash播放器10.0之后呢,也是出于安全考虑吧,System.setClipboard的内容必须在FLASH里边;
4、用ExternalInterface可以和JS通信;
5、ExternalInterface在flash8中必须引用一下才可以;
默认的HTML代码:

<input type="text" id="testInput" name="testInput" value="4234324234" /> 
<div id="buttonBox"> 
<button onclick="copy('testInput')">copy</button> 
</div>

所以,设计的时候,先作第一个判断,如果是IE,就还用默认的代码,这样最没有问题,如果不是,就用一个FLASH把默认的按钮覆盖;
if (window.XMLHttpRequest){//如果不是IE时,就用FLASH的方式复制 
$('buttonBox').innerHTML = '<embed src="flashCopy.swf" width="48" 
height="23" quality="high" 
pluginspage="http://www.macromedia.com/go/getflashplayer" 
type="application/x-shockwave-flash"></embed>'; 
}

以下是所有的JS文件:
<script> 
function $(id){ 
return document.getElementById(id); 
} 
function copy(){//ie6 
var value = $('testInput').value; 
window.clipboardData.clearData(); 
window.clipboardData.setData("Text", value); 
alert('复制成功!'); 
} 
function flashCopy(){//firefox ....... 
return $('testInput').value; 
} 
function flashCopyBack(){ 
alert('复制成功!'); 
} 
if("v" != "v"){//如果不是IE时,就用FLASH的方式复制 
$('buttonBox').innerHTML = '<embed src="111.swf" width="48" height="23" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>'; 
} 
</script>

FLASH按钮的代码如下:
on (release) { 
import flash.external.ExternalInterface; 
var inputText = ExternalInterface.call('flashCopy'); 
System.setClipboard(inputText); 
ExternalInterface.call('flashCopyBack'); 
//_root.boboText.text = inputText; 
}

原理,就是避开那个安全上的限制,在点FLASH中的按钮时,通过FLASH中的代码去调页面中的JS代码,JS代码可以拿到INPUT中的值,然后再传给FLASH,这时,FLASH中就有了这些值了,然后,FLASH自已再通过System.setClipboard把这些值存到剪贴板上; 再然后,他再去调用页面中的flashCopyBack,flashCopyBack只干一件事,就是提示已复制成功!
我在Firefox、chrome、ie中都测过了,没有问题,如果谁发现有问题,请告诉我,谢谢,因为我现在已经开始用!
转载请注明出处:子鼠
Javascript 相关文章推荐
Javascript 圆角div的实现代码
Oct 15 Javascript
jQuery实现的立体文字渐变效果
May 17 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
js获取当前时间显示在页面上并每秒刷新
Dec 24 Javascript
JavaScript实现的链表数据结构实例
Apr 02 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
May 10 Javascript
JS上传组件FileUpload自定义模板的使用方法
May 10 Javascript
Angular2里获取(input file)上传文件的内容的方法
Sep 05 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
jqGrid表格底部汇总、合计行footerrow处理
Aug 21 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
Jun 20 #Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
Jun 19 #Javascript
一段批量给页面上的控件赋值js
Jun 19 #Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
Jun 19 #Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
Jun 19 #Javascript
WEB高性能开发之疯狂的HTML压缩
Jun 19 #Javascript
Html中JS脚本执行顺序简单举例说明
Jun 19 #Javascript
You might like
我的论坛源代码(四)
2006/10/09 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
python实现整数的二进制循环移位
2019/03/08 Python
python opencv摄像头的简单应用
2019/06/06 Python
对Django外键关系的描述
2019/07/26 Python
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
房屋继承公证书
2014/04/10 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python