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添加String.Format方法
Aug 11 Javascript
javascript 用记忆函数快速计算递归函数
Mar 15 Javascript
js 纯数字不重复排列的另类方法
Jul 17 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
Sep 28 Javascript
jquery给图片添加鼠标经过时的边框效果
Nov 12 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
Aug 20 Javascript
Jquery日历插件制作简单日历
Oct 28 Javascript
jquery判断当前浏览器的实现代码
Nov 07 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
Bootstrap select多选下拉框实现代码
Dec 23 Javascript
jQuery 表单序列化实例代码
Jun 11 jQuery
nuxt.js中间件实现拦截权限判断的方法
Nov 21 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中进行身份认证
2006/10/09 PHP
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
基于jquery的气泡提示效果
2010/05/31 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
Python with的用法
2014/08/22 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
python的setattr函数实例用法
2020/12/16 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
客服专员岗位职责范本
2013/11/29 职场文书
青春励志演讲稿
2014/04/29 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
企业文化标语大全
2014/06/10 职场文书
村委会贫困证明范文
2014/09/21 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python