首页 > 网站 > WEB开发 > 正文

JS复制内容到剪贴板(兼容FF/Chrome/Safari所有浏览器)

2024-04-27 14:15:29
字体:
来源:转载
供稿:网友

JS复制内容到剪贴板(兼容FF/Chrome/Safari所有浏览器)

现在浏览器种类也越来越多,诸如IE、Firefox、Chrome、Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了。

Flash9时代,有一个通杀所有浏览器的js复制内容到剪贴板的方案

这个方案是一个最流行的方法:著名的ClipboardCopy解决方案利用一个clipboard.swf作为桥梁,复制内容到剪贴板。

原理是:创建一个隐藏的flash文件,同时给给flash的变量FlashVars赋值“clipboard=..”,通过这个赋值flash就会把复制的内容放到剪贴板。这个方法兼容IE、Firefox、Opera、chrome、Safari,真可谓“万能”的解决方案。浏览器Flash的安装率非常高,这几乎是一个完美的解决方案。

12345678910111213141516171819202122232425262728<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Web开发者 - www.Admin10000.com </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的下载地址:clicpboard.rard

但是Flash10时代,上面的方法已经不行了。

因为flash10中规定了只有在swf上进行了真实的操作(比如鼠标点击)才能访问剪切板,而上述方法只是使用了一个隐藏的swf文件,通过Javascript操作flash的剪贴板,用户并没有对swf文件进行真实的操作,因此这个方法也就失效了。

那么如何解决这个“真实操作”的问题呢?可以使用一个JavaScript库:ZeroClipboard,利用这个js库可以支持利用flash10实现复制到剪贴板。这个方法原理是在一个透明的flash(对用户来说是不可见的)上覆盖一个dom元素比如button或div,当点击这个dom时,实际点击的是flash,从而访问flash的剪贴板。

以下是调试好的例子:

12345678910111213141516171819202122232425262728293031<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Zero Clipboard Test</title><

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表