zoukankan      html  css  js  c++  java
  • IE和firefox通用的复制到剪贴板的JS函数,Opera测试不成功!

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 
     4 <head>
     5 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
     6 <title>IE和firefox通用的复制到剪贴板的JS函数,Opera测试不成功!</title>
     7 <meta name="description" content="涂聚文,捷为工作室,经营信息流,物流,人力资源流,资本流的系统解决方案的开发与设计和服务,geoVI studio.Geovin Du. Systems Solution to Fund flow,and Information flow,and Material flow,and Control flow,and Human Resource.Applied software development,design and service。."/>
     8 <meta name="description" content="Study,Communicate。 "/>
     9 <meta name="Robots" content="all index follow "/>
    10 <meta name="Author" content="涂聚文" />
    11 <meta name="keywords" content="涂聚文,捷为工作室,经营信息流,物流,人力资源流,资本流的系统解决方案的开发与设计和服务" />
    12 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
    13 <link rel="icon" href="favicon.ico" type="image/ico" />
    14 <link rel="bookmark" href="favicon.ico"/> 
    15 <script language="javascript" type="text/javascript"> 
    16 //alert(window.location.href); 
    17 //alert(window.location); 
    18 //alert(location.href); 
    19 //alert(parent.location.href); 
    20 //alert(top.location.href); 
    21 //alert(document.location.href); 
    22 //alert(document.URL);
    23 </script>
    24 
    25 <script type="text/javascript">
    26 
    27 function copyToClipboard(txt) {   
    28      if(window.clipboardData) {   
    29              window.clipboardData.clearData();   
    30              window.clipboardData.setData("Text", txt+"geovindu,涂聚文,Geovin Du"+window.location.href);   //window.location.href:获取当前页面地址
    31      } else if(navigator.userAgent.indexOf("Opera"!= -1) {   
    32            window.clipboardData.getData("Text")= txt+"geovindu,涂聚文,Geovin Du";//Opera测试不支持 window.location  
    33      } else if (window.netscape) {   
    34           try {   
    35                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");   
    36           } catch (e) {   
    37                alert("被浏览器拒绝!\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");   
    38           }   
    39           var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);   
    40           if (!clip)   
    41                return;   
    42           var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);   
    43           if (!trans)   
    44                return;   
    45           trans.addDataFlavor('text/unicode');   
    46           var str = new Object();   
    47           var len = new Object();   
    48           var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);   
    49           var copytext = txt+"geovindu,涂聚文,Geovin Du"+window.location.href;   
    50           str.data = copytext;   
    51           trans.setTransferData("text/unicode",str,copytext.length*2);   
    52          var clipid = Components.interfaces.nsIClipboard;   
    53           if (!clip)   
    54                return false;   
    55           clip.setData(trans,null,clipid.kGlobalClipboard);   
    56           alert("涂聚文提醒你,复制成功!")   
    57      }   
    58 }  
    59 
    60 </script>
    61 
    62 <script language="javascript" type="text/javascript">
    63 function copy_clip(text)
    64 {  
    65 <!--[if IE]>    
    66 window.clipboardData.setData("Text", text);    return;  
    67 <![endif]-->    
    68 //do Mozilla or Cross-Browser clipboard copy here.}
    69 //Opero
    70 //"javascript:(function(){var html_selection=document.createElement('div'); html_selection.appendChild(window.getSelection().getRangeAt(0).cloneContents()); elems=html_selection.all;for(var i=0;i<elems.length;i++){if(elems[i].href)elems[i].href=elems[i].href;if(elems[i].src)elems[i].src=elems[i].src}; document.location='data:text/cwf;charset=utf-8,'+encodeURIComponent('<HTML><BODY><HEAD><META HTTP-EQUIV=\'Content-Type\' CONTENT=\'text/html; charset=utf-8\'></HEAD>'+html_selection.innerHTML+'</BODY></HTML>');})()"
    71     </script>
    72 
    73 </head>
    74 
    75 <body>
    76 dsafdsaf
    77 <textarea id="editor" rows="3" cols="80"> 
    78 Try pasting text into this area! 
    79 </textarea>
    80 
    81 <input onclick="copyToClipboard(document.getElementById('editor').value);" value="复制" type="button" style=" 44px; height: 22px"/> 
    82 
    83  </body>
    84 
    85 </html>

    跨各浏览器(IE,FoxFire,Opera)等.

    http://bowser.macminicolo.net/~jhuckaby/zeroclipboard/

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 
     4 <head>
     5 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
     6 <title>Zero Clipboard Test跨各浏览器(IE,FoxFire,Opera)等</title>
     7 <style type="text/css">
     8         body { font-family:arial,sans-serif; font-size:9pt; }
     9         
    10         .my_clip_button { 150px; text-align:center; border:1px solid black; background-color:#ccc; margin:10px; padding:10px; cursor:default; font-size:9pt; }
    11         .my_clip_button.hover { background-color:#eee; }
    12         .my_clip_button.active { background-color:#aaa; }
    13     </style>
    14 <script type="text/javascript" src="ZeroClipboard.js"></script>
    15 <script language="javascript" type="text/javascript">
    16         var clip = null;
    17         
    18         function $(id) { return document.getElementById(id); }
    19         
    20         function init() {
    21             clip = new ZeroClipboard.Client();
    22             clip.setHandCursor( true );
    23             
    24             clip.addEventListener('load', my_load);
    25             clip.addEventListener('mouseOver', my_mouse_over);
    26             clip.addEventListener('complete', my_complete);
    27             
    28             clip.glue( 'd_clip_button' );
    29         }
    30         
    31         function my_load(client) {
    32             debugstr("Flash movie loaded and ready.");
    33         }
    34         
    35         function my_mouse_over(client) {
    36             // we can cheat a little here -- update the text on mouse over
    37             clip.setText( $('fe_text').value );
    38         }
    39         
    40         function my_complete(client, text) {
    41             debugstr("Copied text to clipboard: " + text );
    42         }
    43         
    44         function debugstr(msg) {
    45             var p = document.createElement('p');
    46             p.innerHTML = msg;
    47             $('d_debug').appendChild(p);
    48         }
    49     </script>
    50 </head>
    51 
    52 <body onload="init()">
    53 <h1>Zero Clipboard Test</h1>
    54 
    55     <p><script>document.write("Your browser: " + navigator.userAgent);</script></p>
    56     <table width="100%">
    57         <tr>
    58             <td width="50%" valign="top">
    59                 <!-- Upload Form -->
    60                 <table>
    61                     <tr>
    62                         <td align="right"><b>Text:</b></td>
    63 
    64                         <td align="left"><textarea id="fe_text" cols=50 rows=5 onChange="clip.setText(this.value)">Copy me!</textarea></td>
    65                     </tr>
    66                 </table>
    67                 <br/>
    68                 <div id="d_clip_button" class="my_clip_button"><b>Copy To Clipboard...</b></div>
    69             </td>
    70             <td width="50%" valign="top">
    71                 <!-- Debug Console -->
    72 
    73                 <div id="d_debug" style="border:1px solid #aaa; padding: 10px; font-size:9pt;">
    74                     <h3>Debug Console:</h3>
    75                 </div>
    76             </td>
    77         </tr>
    78     </table>
    79     
    80     <br/><br/>
    81     You can paste text here if you want, to make sure it worked:<br/>
    82 
    83     <textarea id="testarea" cols="50" rows="10"></textarea><br/>
    84     <input type="button" value="Clear Test Area" onClick="$('testarea').value = '';"/>
    85 </body>
    86 
    87 </html>

    ZeroClipboard.js

    // Simple Set Clipboard System
    // Author: Joseph Huckaby

    var ZeroClipboard = {
     
     version: "1.0.7",
     clients: {}, // registered upload clients on page, indexed by id
     moviePath: 'ZeroClipboard.swf', // URL to movie //http://bowser.macminicolo.net/~jhuckaby/zeroclipboard/ZeroClipboard.swf
     nextId: 1, // ID of next movie
     
     $: function(thingy) {
      // simple DOM lookup utility function
      if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
      if (!thingy.addClass) {
       // extend element with a few useful methods
       thingy.hide = function() { this.style.display = 'none'; };
       thingy.show = function() { this.style.display = ''; };
       thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
       thingy.removeClass = function(name) {
        var classes = this.className.split(/\s+/);
        var idx = -1;
        for (var k = 0; k < classes.length; k++) {
         if (classes[k] == name) { idx = k; k = classes.length; }
        }
        if (idx > -1) {
         classes.splice( idx, 1 );
         this.className = classes.join(' ');
        }
        return this;
       };
       thingy.hasClass = function(name) {
        return !!this.className.match( new RegExp("http://www.cnblogs.com/geovindu/admin/file://s/*" + name + "http://www.cnblogs.com/geovindu/admin/file://s/*") );
       };
      }
      return thingy;
     },
     
     setMoviePath: function(path) {
      // set path to ZeroClipboard.swf
      this.moviePath = path;
     },
     
     dispatch: function(id, eventName, args) {
      // receive event from flash movie, send to client  
      var client = this.clients[id];
      if (client) {
       client.receiveEvent(eventName, args);
      }
     },
     
     register: function(id, client) {
      // register new client to receive events
      this.clients[id] = client;
     },
     
     getDOMObjectPosition: function(obj, stopObj) {
      // get absolute coordinates for dom element
      var info = {
       left: 0,
       top: 0,
        obj.width ? obj.width : obj.offsetWidth,
       height: obj.height ? obj.height : obj.offsetHeight
      };

      while (obj && (obj != stopObj)) {
       info.left += obj.offsetLeft;
       info.top += obj.offsetTop;
       obj = obj.offsetParent;
      }

      return info;
     },
     
     Client: function(elem) {
      // constructor for new simple upload client
      this.handlers = {};
      
      // unique ID
      this.id = ZeroClipboard.nextId++;
      this.movieId = 'ZeroClipboardMovie_' + this.id;
      
      // register client with singleton to receive flash events
      ZeroClipboard.register(this.id, this);
      
      // create movie
      if (elem) this.glue(elem);
     }
    };

    ZeroClipboard.Client.prototype = {
     
     id: 0, // unique ID for us
     ready: false, // whether movie is ready to receive events or not
     movie: null, // reference to movie object
     clipText: '', // text to copy to clipboard
     handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
     cssEffects: true, // enable CSS mouse effects on dom container
     handlers: null, // user event handlers
     
     glue: function(elem, appendElem, stylesToAdd) {
      // glue to DOM element
      // elem can be ID or actual DOM element object
      this.domElement = ZeroClipboard.$(elem);
      
      // float just above object, or zIndex 99 if dom element isn't set
      var zIndex = 99;
      if (this.domElement.style.zIndex) {
       zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
      }
      
      if (typeof(appendElem) == 'string') {
       appendElem = ZeroClipboard.$(appendElem);
      }
      else if (typeof(appendElem) == 'undefined') {
       appendElem = document.getElementsByTagName('body')[0];
      }
      
      // find X/Y position of domElement
      var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
      
      // create floating DIV above element
      this.div = document.createElement('div');
      var style = this.div.style;
      style.position = 'absolute';
      style.left = '' + box.left + 'px';
      style.top = '' + box.top + 'px';
      style.width = '' + box.width + 'px';
      style.height = '' + box.height + 'px';
      style.zIndex = zIndex;
      
      if (typeof(stylesToAdd) == 'object') {
       for (addedStyle in stylesToAdd) {
        style[addedStyle] = stylesToAdd[addedStyle];
       }
      }
      
      // style.backgroundColor = '#f00'; // debug
      
      appendElem.appendChild(this.div);
      
      this.div.innerHTML = this.getHTML( box.width, box.height );
     },
     
     getHTML: function(width, height) {
      // return HTML for movie
      var html = '';
      var flashvars = 'id=' + this.id +
       '&width=' + width +
       '&height=' + height;
       
      if (navigator.userAgent.match(/MSIE/)) {
       // IE gets an OBJECT tag
       var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
       html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="center"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
      }
      else {
       // all other browsers get an EMBED tag
       html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="center" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
      }
      return html;
     },
     
     hide: function() {
      // temporarily hide floater offscreen
      if (this.div) {
       this.div.style.left = '-2000px';
      }
     },
     
     show: function() {
      // show ourselves after a call to hide()
      this.reposition();
     },
     
     destroy: function() {
      // destroy control and floater
      if (this.domElement && this.div) {
       this.hide();
       this.div.innerHTML = '';
       
       var body = document.getElementsByTagName('body')[0];
       try { body.removeChild( this.div ); } catch(e) {;}
       
       this.domElement = null;
       this.div = null;
      }
     },
     
     reposition: function(elem) {
      // reposition our floating div, optionally to new container
      // warning: container CANNOT change size, only position
      if (elem) {
       this.domElement = ZeroClipboard.$(elem);
       if (!this.domElement) this.hide();
      }
      
      if (this.domElement && this.div) {
       var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
       var style = this.div.style;
       style.left = '' + box.left + 'px';
       style.top = '' + box.top + 'px';
      }
     },
     
     setText: function(newText) {
      // set text to be copied to clipboard
      this.clipText = newText;
      if (this.ready) this.movie.setText(newText);
     },
     
     addEventListener: function(eventName, func) {
      // add user event listener for event
      // event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
      eventName = eventName.toString().toLowerCase().replace(/^on/, '');
      if (!this.handlers[eventName]) this.handlers[eventName] = [];
      this.handlers[eventName].push(func);
     },
     
     setHandCursor: function(enabled) {
      // enable hand cursor (true), or default arrow cursor (false)
      this.handCursorEnabled = enabled;
      if (this.ready) this.movie.setHandCursor(enabled);
     },
     
     setCSSEffects: function(enabled) {
      // enable or disable CSS effects on DOM container
      this.cssEffects = !!enabled;
     },
     
     receiveEvent: function(eventName, args) {
      // receive event from flash
      eventName = eventName.toString().toLowerCase().replace(/^on/, '');
        
      // special behavior for certain events
      switch (eventName) {
       case 'load':
        // movie claims it is ready, but in IE this isn't always the case...
        // bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
        this.movie = document.getElementById(this.movieId);
        if (!this.movie) {
         var self = this;
         setTimeout( function() { self.receiveEvent('load', null); }, 1 );
         return;
        }
        
        // firefox on pc needs a "kick" in order to set these in certain cases
        if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
         var self = this;
         setTimeout( function() { self.receiveEvent('load', null); }, 100 );
         this.ready = true;
         return;
        }
        
        this.ready = true;
        this.movie.setText( this.clipText );
        this.movie.setHandCursor( this.handCursorEnabled );
        break;
       
       case 'mouseover':
        if (this.domElement && this.cssEffects) {
         this.domElement.addClass('hover');
         if (this.recoverActive) this.domElement.addClass('active');
        }
        break;
       
       case 'mouseout':
        if (this.domElement && this.cssEffects) {
         this.recoverActive = false;
         if (this.domElement.hasClass('active')) {
          this.domElement.removeClass('active');
          this.recoverActive = true;
         }
         this.domElement.removeClass('hover');
        }
        break;
       
       case 'mousedown':
        if (this.domElement && this.cssEffects) {
         this.domElement.addClass('active');
        }
        break;
       
       case 'mouseup':
        if (this.domElement && this.cssEffects) {
         this.domElement.removeClass('active');
         this.recoverActive = false;
        }
        break;
      } // switch eventName
      
      if (this.handlers[eventName]) {
       for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
        var func = this.handlers[eventName][idx];
       
        if (typeof(func) == 'function') {
         // actual function reference
         func(this, args);
        }
        else if ((typeof(func) == 'object') && (func.length == 2)) {
         // PHP style object + method, i.e. [myObject, 'myMethod']
         func[0][ func[1] ](this, args);
        }
        else if (typeof(func) == 'string') {
         // name of function
         window[func](this, args);
        }
       } // foreach event handler defined
      } // user defined handler for event
     }
     
    };

  • 相关阅读:
    Kubernetes如何支持有状态服务的部署?
    Web 安全入门-书籍及建议
    docker kubernetes swarm spring cloud结合学习资源
    docker-compose 完整打包发布, 多服务,多节点SPRING CLOUD ,EUREKA 集群
    Kubernetes权威指南学习笔记(一)
    解决k8s出现pod服务一直处于ContainerCreating状态的问题的过程
    Spark操作—aggregate、aggregateByKey详解
    maven设置------settings.xml文件学习
    Scala详细环境安装与配置
    内存泄露
  • 原文地址:https://www.cnblogs.com/geovindu/p/2017421.html
Copyright © 2011-2022 走看看