兼容所有浏览器的复制到剪切板功能,悬浮层不能复制问题解决

来源:互联网 发布:flask mysql 编辑:程序博客网 时间:2024/06/06 03:43

   浏览器复制其实是一个十分令人头疼的问题,因为这涉及到浏览器安全,所以浏览器本生不会提供相应接口,我们也没有办法通过纯js来实现这个功能,但是你会看到很多网站,如百度云盘他们却做到了这个功能,那究竟他们是如何实现的,今天就让我带你去看看他们的秘密。

   首先这个功能对我是十分重要的,因为去转盘网的私密分享必须要具备这个功能,截图如下:

   

   只要你点击点我复制按钮,网盘私密分享的密码就会自动的被复制到你的浏览器。其实这个功能本人最开始做的时候还是付出很多时间,因为他涉及到悬浮层的复制,问题的难度陡然增大许多,不过现在我还是愿意公开代码,希望大家喜欢。顺便我我指出其他几篇我写的博客代码,希望喜欢:


  好的,现在让我们言归正转,浏览器复制需要两个插件,请先下载:下载地址1 下载地址2

  代码如下:

  

[javascript] view plain copy
  1. var clip=null;  
  2. clip = new ZeroClipboard.Client();//new 一个对像  
  3. clip.setText(null);  
  4. ZeroClipboard.setMoviePath( '${pageContext.request.contextPath}/media/js/ZeroClipboard.swf');  //和html不在同一目录需设置setmoviepath  
  5. //ZeroClipboard.setMoviePath( '../media/js/zeroclipboard10.swf');  
  6. clip.setHandCursor(true);  
  7. clip.addEventListener('mousedown'function(client) {  
  8.        
  9.     window.passwd = document.getElementById("file-password").value;  
  10.     clip.setText(window.passwd);  
  11. });   
  12.    
  13. clip.addEventListener('complete'function (client, text) {  
  14.    
  15.       window.url = document.getElementById("file-url").value;  
  16.       var id=get_param("id");  
  17.       var type=get_param("type");  
  18.       window.open(window.url,'_self');  
  19.       $('.theme-popover').hide();  
  20.       $('.theme-popover-mask').hide();//将复制框dismiss  
  21.       document.getElementById("theme-popover").style.visibility="hidden";//影藏  
  22.       //记录下载信息  
  23.       $.ajax({  
  24.                   type: "post",  
  25.                   url: "${pageContext.request.contextPath}/download/statistic.action",   
  26.                   dataType:"json",  
  27.                   data:{  
  28.                           id:id,  
  29.                           type:type  
  30.                   },  
  31.                   success:function(data){;}       
  32.        });  
  33. });   
  34. clip.glue('copy-password','copy-dialog');  

代码中的记录下载信息等都是和去转盘网有关系,你不必关心,下面一句:

[javascript] view plain copy
  1. document.getElementById("theme-popover").style.visibility="hidden";//影藏  

非常重要,因为要悬浮层复制,如果是相对布局flash是找不见覆盖按钮的,所以开始的时候

document.getElementById("theme-popover").style.visibility="visible";//私密分享时显示

最后要影藏。

阅读全文
1 0