4当前位置:网页制作JavaScript教程兼容各种浏览器的复制内容到剪贴…
4网页制作分类
CSS | HTML
FrontPage | DreamWeaver
JavaScript | ASP
.Net | PHP
JSP | XML
数据库 | PhotoShop
FireWorks | Flash
视频 | 其它
4赞助商链接
4最新网页制作
·浅谈JavaScript中定义变量时有无var声明的区别
·通过Jquery获取URL参数并转码
·Javascript获取时间间隔的方法
·Javascript获取视频时长
·javascript中双感叹号(!!)作用示例介绍
·javascript:void(0)使用探讨
·JS设置下拉框为只读的方法
·JS转化毫秒为时间格式代码
·Js控制CSS切换样式表实现网页风格切换
·网页更换皮肤样式功能浅析
4热门网页制作
·网页自动适应客户端分辨率的实现
·JS网页加载进度条
·突破IE屏蔽限制弹出新窗口
·三级下拉联动链接菜单
·文本框控制字数和禁止粘贴
·33个JavaScript经典效果
·JS获取页面地址栏参数
·JavaScript去除空格的三种方法
·又一个全国省市双级联动下拉选择框
·全国省市县无刷新多级联动菜单
4相关网页制作
·JavaScript拖放效果原理与分析
·很不合理的设计:打开页面光标自动定位到文本框
·IE下三种圆角方法的比较
·不错的介绍JS中Cookie的文章
·多行文本框自适应内容高度
·javascript学习笔记一:DOM基本操作
·减轻JavaScript测试和调试负担
·Javascript中substr()与substring()的区别
·让您网页的按钮也能使用热键
·showModalDialog/showModelessDialog用法
兼容各种浏览器的复制内容到剪贴板方法
类别:JavaScript教程    来源:网络    时间:2013/2/16    贴士:推荐给好友
收藏本页 8 
  现在浏览器种类也越来越多,诸如IE、Firefox、Chrome、Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了。

  在FLASH 9时代,有一个通杀所有浏览器的js复制内容到剪贴板的方案。这个方案是一个最流行的方法: 著名的Clipboard Copy解决方案 利用一个clipboard.swf作为桥梁,复制内容到剪贴板。

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

  JS代码:
<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>


  HTML代码:
<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>


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

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

  代码如下:
<html>
<head>
<title>Zero Clipboard Test</title>
<script type="text/javascript" src="ZeroClipboard.js"></script>
<script type="text/javascript">
function init() {
  clip=new ZeroClipboard.Client();
  clip.setHandCursor(true);
  clip.addEventListener('mouseOver', function (client){
    clip.setText( $('fe_text').value );
  });
  clip.addEventListener('complete', function (client, 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"><b>复制</b></span></span>
</body>
</html>


  调试时请上传到网站,本地直接打开flash会出错的,没权限。ZeroClipboard.js文件里moviePath属性是falsh的地址,就是目录下的那个ZeroClipboard.swf存放的地址位置。这种js复制内容到剪贴板的方案可支持浏览器:IE、Firefox、Opera、chrome、Safari等所有浏览器!

  文件下载地址:<a href="http://www.zzsky.cn/build/downloads/ZeroClipboard/ZeroClipboard.js" target="_blank">ZeroClipboard.js</a>、<a href="http://www.zzsky.cn/build/downloads/ZeroClipboard/ZeroClipboard.swf" target="_blank">ZeroClipboard.swf</a>。
·上一篇:浅谈Javascript数组的使用方法
·下一篇:JS操作Cookies的方法
本站部分内容收集整理于网络,仅用于学习,不存在商业目的,如有涉及版权等问题请联系站长,本站将在第一时间内进行处理!
Copyright © 2007-2010 Zzsky.Cn  中国站长天空  网站制作维护:可乐猫  QQ:8127544(请注明来意)
设为首页  加入收藏  联系站长  友情链接  闽ICP备12017729号