手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
摘要:但IE6两行JS代码就可以,IE7以上也差不多,只不过出来一个安全提示比较恶心,用户如果看到了,一定有怀疑;再但就是Firefox、Chro...

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

但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>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中都测过了,没有问题,如果谁发现有问题,请告诉我,谢谢,因为我现在已经开始用!

转载请注明出处:子鼠

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

Java的不同版本:J2SE、J2EE、J2ME的区别

Jquery实现动态切换图片的方法

仿DVBBS下拉菜单效果 jb51修正无错

JS与Java在网页设计中的区别

解析javascript中鼠标滚轮事件

使用Node.js处理前端代码文件的编码问题

JavaScript代码因逗号不规范导致IE不兼容的问题

AngularJS中的一些常用指令介绍

浅谈javascript事件取消和阻止冒泡

js获取字符串字节数方法小结

精品推荐
分类导航