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算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
Sep 14 Javascript
JQuery之focus函数使用介绍
Aug 20 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
May 05 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
May 04 Javascript
React传值 组件传值 之间的关系详解
Aug 26 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 Javascript
vue把输入框的内容添加到页面的实例讲解
Nov 11 Javascript
JS Array.from()将伪数组转换成数组的方法示例
Mar 23 Javascript
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
我的论坛源代码(一)
2006/10/09 PHP
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
js实现密码强度检验
2017/01/15 Javascript
javascript常用的设计模式
2017/02/09 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
详解angular笔记路由之angular-router
2017/09/12 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
django 外键model的互相读取方法
2018/12/15 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
python连接mongodb集群方法详解
2020/02/13 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
用python对oracle进行简单性能测试
2020/12/05 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
html5的localstorage详解
2017/05/09 HTML / CSS
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
安全检查管理制度
2014/02/02 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server