GWT中复制到剪贴板 js+flash实现复制 兼容性比较好


Posted in Javascript onMarch 07, 2010

但是用flash就可以复制。例子就是VeryCd,看“复制选中的连接”按钮是一个flash。看来flash的安全沙箱没有限制将内容复制到剪贴板 

GWT中复制到剪贴板 js+flash实现复制 兼容性比较好 

 

但是也是有限制的: 

1 根据ZeroClipborad的人们说,这些flash必须通过网络加载。

 Zero Clipboard Does Not Work From Local Disk


This is a security restriction by Adobe Flash Player. Unfortunately, since we are utilizing the JavaScript-to-Flash interface ("ExternalInterface") this only works while truly online (if the page URL starts with "http://" or "https://"). It won't work running from a local file on disk.

However, there is a way for you to edit your local Flash Player security settings and allow this. Go to this website:

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html

And add the path to your local "ZeroClipboard.swf" file to the trusted files list, or try the "allow all" option.

 

2 flash虽然提供复制功能,但是前提是要通过用户的一次点击。意思就是不能在javascript中通过函数的方式setText就复制到剪贴板,而是调用了这个setText函数后,用户的鼠标在flash上有了一次点击,才可以。

This library is fully compatible with Flash Player 10, which requires that the clipboard copy operation be initiated by a user click event inside the Flash movie.  

这里和使用flash上传文件的swfupload有同样的问题。 

使用ZeroClipboard,可以将网页内容复制到剪贴板。但是ZeroClipboard没有GWT封装,我们项目是用GWT的,所以就学着swfupload的GWT封装,把ZeroClipboard也封装成GWT可以调用的形式。

1 先封装了一个zeroclipboard.jar 

2 项目中使用的是GXT控件库,为了和控件紧密结合,写了一个ZClipboardBinder类,将两者结合起来

3 使用方法见下(Zeroclipboard_test.java)

package zero.clipboard.test.client; 
import java.util.Date; 
import zero.clipboard.test.client.ZClipboardBinder.ClipboardListener; 
import com.extjs.gxt.ui.client.widget.LayoutContainer; 
import com.extjs.gxt.ui.client.widget.button.Button; 
import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.user.client.ui.RootPanel; 
/** 
* Entry point classes define <code>onModuleLoad()</code>. 
*/ 
public class Zeroclipboard_test implements EntryPoint { 
public void onModuleLoad() { 
LayoutContainer c = new LayoutContainer(); 
c.setSize(400, 300); 
Button btn = new Button("Copy Hello World"); 
// 将控件和ZeroClipboard绑定 
// ZClipboardBinder.bind(btn, "Hello World"); 
ZClipboardBinder.bind(btn, new ClipboardListener() { 
@Override 
public String prepareCopy() { 
return (new Date()).toString(); 
} 
}); 
c.add(btn); 
RootPanel.get().add(c); 
} 
}

相关下载都在附件中了。 

attachment.zip

示意结果

GWT中复制到剪贴板 js+flash实现复制 兼容性比较好 
点击按钮后——其实是点击了上面的flash,使用ctrl+v,就能看到结果。

GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
现在发现有很多有意义的功能都不能用javascript实现,例如多文件上传和复制到剪贴板,都是通过flash做中介,“曲线”实现的 ,不知道最后HTML5有没有解决这些问题,不用我们兜兜转转。
Zero Clipboard 开源的 JavaScript+flash 复制库类 

Javascript 相关文章推荐
Javascript 中 null、NaN和undefined的区别总结
Apr 10 Javascript
JavaScript判断密码强度(自写代码)
Sep 06 Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 Javascript
移动端手指放大缩小插件与js源码
May 22 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
Jan 16 Javascript
将RGB值转换为灰度值的简单算法
Oct 09 Javascript
vue基于better-scroll实现左右联动滑动页面
Jun 30 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
Oct 24 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 Javascript
vue ant design 封装弹窗表单的使用
Jun 01 Vue.js
javascript实现面向对象类的功能书写技巧
Mar 07 #Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
Mar 07 #Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
Mar 05 #Javascript
Jquery Validation插件防止重复提交表单的解决方法
Mar 05 #Javascript
javascript下判断一个元素是否存在的代码
Mar 05 #Javascript
ExtJs扩展之GroupPropertyGrid代码
Mar 05 #Javascript
js 获取服务器控件值的代码
Mar 05 #Javascript
You might like
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
JavaScript中的this使用详解
2016/07/27 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
网络安全方面的面试题
2016/01/07 面试题
退伍老兵事迹材料
2014/01/31 职场文书
预备党员表决心书
2014/03/11 职场文书
2014全国两会心得体会
2014/03/17 职场文书
出国英文推荐信
2014/05/10 职场文书
工程造价专业求职信
2014/07/17 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
民政工作个人总结
2015/02/28 职场文书
大专护理专业自荐信
2015/03/25 职场文书
污染环境建议书
2015/09/14 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP