背景:完成一键复制功能、解决跨浏览器限制
正文:说这个功能的时候一定要先说说IE浏览器自带的属性window.clipboardData 这么恶心的属性只能支持IE浏览器,而当前仅仅满足ie浏览器是不能满足用户需求的,鬼知道他们为什么不适应我们的技术啊,当然像我们这些聪明的开发者当然会有其他的办法。说说其他办法之前先把ie这个属性说完。
仅支持IE浏览器: window.clipboardData.setData(data); data就是你的数据按照你的规则拼接即可
适合多个浏览器的就是强大的 js flash ZeroClipboard插件。直接贴代码
$(document).ready(function () { 页面执行就加载
var clip = new ZeroClipboard.Client()//创建ZeroClipBoard对象;
ZeroClipboard.setMoviePath( "/ui/uiPub/js/ZeroClipboard.swf" );//flash动画文件
clip.setHandCursor( true );设置鼠标移动过来的形状
clip.setText(""); //设置文本内容我这里是清空剪切板
clip.addEventListener( "mouseUp", function(client) { //监听鼠标事件
var data1 = "";
var tab = document.getElementById("copy");
var count= tab.rows.length;
for (var i=1; i < count;i++) {
var num = tab.rows[i].cells[0].innerHTML;
var pwd = tab.rows[i].cells[1].innerHTML;
data1 =data1 + num +" ";
data1 =data1 + pwd +"\r\n";
}
clip.setText(data1);
modalMsg("复制成功",1);
});
clip.glue("copyd"); // 和上一句位置不可调换
});
这里鼠标监听的事件有很多种可以满足大家的需求,我这个代码亲测实用。直接就可以用,用的时候我当然要说一下原理是吧
就是将要复制的内容设置为flash插件的数据,再通过flash的接口复制到剪贴板中。这样做最大的好处就是照顾到页面本身的兼容性,HTML5中虽然提供了读取剪贴板的方法但写入内容还不支持(至少我是没成功过)。但是这样做有个安全问题,flash插件可以随时访问你的剪贴板内容,如果你刚好复制了你的敏感信息(比如密码),又访问了这个网页,那么它就可以轻易地获取你的数据并传到他自己的服务器上,所以之后的版本中特意加入了一定要用户点击相应的swf文件才可以获取信息的限制,所以就要求引入的swf插件要覆盖用户点击的部分,带来的问题就是会影响hover伪类、样式和相应事件的触发,当然,在插件中会对此进行对应的弥补设置的。
需要js、swf的就自行下载 如果你们是在懒 那就加我qq吧929046859 暗号 Mr_KingPeng