复制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 相关文章推荐
getComputedStyle与currentStyle获取样式(style/class)
Mar 19 Javascript
JS数组的赋值介绍
Mar 10 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
Sep 12 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
Apr 01 Javascript
jQuery获取选中单选按钮radio的值
Dec 27 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
Jun 19 Javascript
Vue项目添加动态浏览器头部title的方法
Jul 11 Javascript
Vue 事件处理操作实例详解
Mar 05 Javascript
小程序中this.setData的使用和注意事项
Aug 28 Javascript
优雅的使用javascript递归画一棵结构树示例代码
Sep 22 Javascript
微信小程序 下拉刷新及上拉加载原理解析
Nov 06 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
js history对象简单实现返回和前进
2013/10/30 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
python简单获取数组元素个数的方法
2015/07/13 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python random模块用法解析及简单示例
2017/12/18 Python
wxPython的安装与使用教程
2018/08/31 Python
Python2与Python3的区别详解
2020/02/09 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
2014离婚协议书范文
2014/09/10 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
2014年生产部工作总结
2014/12/17 职场文书
财务部会计岗位职责
2015/02/03 职场文书
个人思想政治总结
2015/03/05 职场文书
2015年体育部工作总结
2015/04/02 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android