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嵌套函数及闭包
Nov 09 Javascript
JavaScript中的ArrayBuffer详细介绍
Dec 08 Javascript
JavaScript实现仿网易通行证表单验证
May 25 Javascript
JS实现的最简Table选项卡效果
Oct 14 Javascript
Jquery Mobile 自定义按钮图标
Nov 18 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
Jul 07 Javascript
JS实现的系统调色板完整实例
Dec 21 Javascript
react-router实现按需加载
May 09 Javascript
vue实现消息的无缝滚动效果的示例代码
Dec 05 Javascript
vue interceptor 使用教程实例详解
Sep 13 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 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
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
python Tornado框架的使用示例
2020/10/19 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
花店创业计划书范文
2014/02/07 职场文书
签约仪式主持词
2014/03/19 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
2014年底个人工作总结
2015/03/10 职场文书
趣味运动会简讯
2015/07/20 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers