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 相关文章推荐
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
Nov 24 Javascript
在linux中使用包管理器安装node.js
Mar 13 Javascript
12种JavaScript常用的MVC框架比较分析
Nov 16 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
Jun 24 Javascript
Angular ui.bootstrap.pagination分页
Jan 20 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
Feb 10 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
js实现网页同时进行多个倒计时功能
Feb 25 Javascript
layui 解决form表单点击无反应的问题
Oct 25 Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 jQuery
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如何透过ODBC来存取数据库
2006/10/09 PHP
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
JavaScript中this详解
2015/09/01 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
企业总经理岗位职责
2014/02/13 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
关于环保的标语
2014/06/13 职场文书
金融管理专业求职信
2014/07/10 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
2015年助残日活动总结
2015/03/27 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
公司管理建议书
2015/09/14 职场文书
php中pcntl_fork详解
2021/04/01 PHP