复制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 清除输入框中的数据
Apr 13 Javascript
JavaScript isArray()函数判断对象类型的种种方法
Oct 11 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 Javascript
实现js保留小数点后N位的代码
Nov 13 Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 Javascript
jQuery使用$.ajax进行即时验证的方法
Dec 08 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
Sep 28 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
微信小程序template模版的使用方法
Apr 13 Javascript
教你完全理解ReentrantLock重入锁
Jun 03 Javascript
vue实现点击追加选中样式效果
Nov 01 Javascript
vue - props 声明数组和对象操作
Jul 30 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
php $_SERVER当前完整url的写法
2009/11/12 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
Pandas的数据过滤实现
2021/01/15 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
物业管理专业自荐信
2014/07/01 职场文书
党校个人总结
2015/03/04 职场文书
追讨欠款律师函
2015/06/24 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python