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 相关文章推荐
picChange 图片切换特效的函数代码
May 06 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
May 19 Javascript
Jquery如何实现点击时高亮显示代码
Jan 22 Javascript
Jquery的each里用return true或false代替break或continue
May 21 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
jquery中toggle函数交替使用问题
Jun 22 Javascript
js对象浅拷贝和深拷贝详解
Sep 05 Javascript
jquery实现图片放大点击切换
Jun 06 jQuery
浅谈react-native热更新react-native-pushy集成遇到的问题
Sep 30 Javascript
Vue创建头部组件示例代码详解
Oct 23 Javascript
Javascript通过控制类名更改样式
May 24 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中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
js 数组操作代码集锦
2009/04/28 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
python实现将元祖转换成数组的方法
2015/05/04 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
python实现rsa加密实例详解
2017/07/19 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
Python 编程速成(推荐)
2019/04/15 Python
简单了解python中对象的取反运算符
2019/07/01 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
职业生涯规划书的格式
2013/12/29 职场文书
预备党员思想汇报
2014/01/08 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android