源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

兼容主流浏览器的JS复制内容到剪贴板

  • 时间:2022-05-26 22:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:兼容主流浏览器的JS复制内容到剪贴板
现在浏览器种类也越来越多,诸如 IE、Firefox、Chrome、Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了。 [b]在FLASH 9 时代,有一个通杀所有浏览器的js复制内容到剪贴板的方案[/b]: 这个方案是一个最流行的方法: [url=http://www.jeffothy.com/weblog/clipboard-copy/]著名的Clipboard Copy解决方案[/url] 利用一个clipboard.swf作为桥梁,复制内容到剪贴板。 原理是:创建一个隐藏的flash文件,同时给给flash的变量FlashVars 赋值“clipboard=..”,通过这个赋值flash就会把复制的内容放到剪贴板。这个方法兼容IE、Firefox、Opera、chrome、 Safari,真可谓“万能”的解决方案。浏览器Flash的安装率非常高,这几乎是一个完美的解决方案。
[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]"> <html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]"> <head> <title>Web开发者 - [url=http://www.Admin10000.com]www.Admin10000.com[/url] </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript">     var clipboardswfdata;     var setcopy_gettext = function(){         clipboardswfdata = document.getElementById('test_text').value;         //alert(clipboardswfdata);         window.document.clipboardswf.SetVariable('str', clipboardswfdata);     }     var floatwin = function(){         alert('复制成功!');         //document.getElementById('clipinner').style.display = 'none';     } </script> </head> <body> <textarea id="test_text" rows="15" cols="100">文本內容.......</textarea> <div id="clipboard_content">   <div class="my_clip_button"><span class="clipinner" id="clipinner">复制代码到剪切板     <embed name="clipboardswf" class="clipboardswf" id="clipboardswf" onmouseover="setcopy_gettext()" devicefont="false" src="./_clipboard.swf" menu="false" allowscriptaccess="sameDomain" swliveconnect="true" wmode="transparent" type="application/x-shockwave-flash" height="20" width="100">     </span>   </div> </div> </body> </html>
clipboard.swf 的下载地址:[url=http://www.jeffothy.com/weblog/uploads/clipboard.php]http://www.jeffothy.com/weblog/uploads/clipboard.php[/url] [b]但是 Flash 10 时代,上面的方法已经不行了。[/b] 因为flash10中规定了只有在swf上进行了真实的操作(比如鼠标点击)才能访问剪切板,而上述方法只是使用了一个隐藏的swf文件,通过javascript操作flash的剪贴板,用户并没有对swf文件进行真实的操作,因此这个方法也就失效了。 那么如何解决这个“真实操作”的问题呢?可以使用一个JavaScript库:[url=http://www.1sucai.cn/article/22403.htm]Zero Clipboard[/url],利用这个js库可以支持利用flash 10 实现复制到剪贴板。这个方法原理是在一个透明的flash(对用户来说是不可见的)上覆盖一个dom元素比如button或div,当点击这个dom时,实际点击的是flash,从而访问flash的剪贴板。  以下是调试好的例子:
[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]"> <html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]"> <head> <title>Zero Clipboard Test</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="ZeroClipboard.js"></script> <script type="text/javaScript">   var clip = null;    function $(id) { return document.getElementById(id); }    function init() {     clip = new ZeroClipboard.Client();     clip.setHandCursor(true);       clip.addEventListener('mouseOver', function (client) {     // update the text on mouse over     clip.setText( $('fe_text').value );     });          clip.addEventListener('complete', function (client, text) {     //debugstr("Copied text to clipboard: " + text );     alert("该地址已经复制,你可以使用Ctrl+V 粘贴。");     });       clip.glue('clip_button', 'clip_container' );   } </script> </head> <body onLoad="init()"> <input id="fe_text" cols="50" rows="5" value="复制内容文本"> <span id="clip_container"><span id="clip_button"><strong>复制</strong></span></span> </body> </html>
点击下载该类库: [url=http://www.1sucai.cn/jiaoben/24961.html]http://www.1sucai.cn/jiaoben/24961.html[/url] 调试时请上传到网站,本地直接打开flash会出错的,没权限。zeroClipboard.js文件里moviePath属性是falsh的地址,就是目录下的那个ZeroClipboard.swf存放的地址位置。 这种js复制内容到剪贴板的方案可支持浏览器:Firefox / IE / opera / chorme / safari 所有浏览器!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部