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 相关文章推荐
WordPress 插件——CoolCode使用方法与下载
Jul 02 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
Jun 09 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
Jun 16 Javascript
JavaScript中合并数组的N种方法
Sep 16 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
详解如何在Angular中快速定位DOM元素
May 17 Javascript
自己动手封装一个React Native多级联动
Sep 19 Javascript
JSON的parse()方法介绍
Jan 31 Javascript
vue实现井字棋游戏
Sep 29 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强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
Python返回真假值(True or False)小技巧
2015/04/10 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
类的核心特性有哪些
2014/01/01 面试题
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
期末学生评语大全
2014/04/24 职场文书
创业融资计划书
2014/04/25 职场文书
护士节策划方案
2014/05/19 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
大客户经理岗位职责
2015/04/09 职场文书
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python