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 EasyUI NumberBox(数字框)的用法
Jul 08 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
页面加载完后自动执行一个方法的js代码
Sep 06 Javascript
JavaScript对Json的增删改属性详解
Jun 02 Javascript
JavaScript每天必学之事件
Sep 18 Javascript
JavaScript SHA1加密算法实现详细代码
Oct 06 Javascript
如何使用headjs来管理和异步加载js
Nov 29 Javascript
关于定制FileField中的上传文件名称问题
Aug 22 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
小程序实现悬浮搜索框
Jul 12 Javascript
JsonServer安装及启动过程图解
Feb 28 Javascript
代码解析React中setState同步和异步问题
Jun 03 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
PHP中使用curl入门教程
2015/07/02 PHP
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
python win32 简单操作方法
2017/05/25 Python
python如何统计序列中元素
2020/07/31 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
python自动化生成IOS的图标
2018/11/13 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
pandas 层次化索引的实现方法
2019/07/06 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Python文件操作基础流程解析
2020/03/19 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
Django如何批量创建Model
2020/09/01 Python
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
怎样声明子类
2013/07/02 面试题
军训考核自我鉴定
2014/02/13 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
校园标语大全
2014/06/19 职场文书
户籍证明格式
2014/09/15 职场文书
孟佩杰观后感
2015/06/17 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
详解Python内置模块Collections
2022/03/22 Python