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 相关文章推荐
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
Dec 06 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
jquery制作select列表双向选择示例代码
Sep 02 Javascript
javascript定时器完整实例
Feb 10 Javascript
详解Node.js:events事件模块
Nov 24 Javascript
微信小程序 PHP生成带参数二维码
Feb 21 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
详解angular应用容器化部署
Aug 14 Javascript
浅谈一个webpack构建速度优化误区
Jun 24 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 Javascript
浅谈JS的二进制家族
May 09 Javascript
vue3中provide && inject的使用
Jul 01 Vue.js
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
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
Extjs学习笔记之七 布局
2010/01/08 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
js+css实现全屏侧边栏
2020/06/16 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
深入理解python函数递归和生成器
2016/06/06 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
转预备党员政审材料
2014/02/06 职场文书
文明寝室标语
2014/06/13 职场文书
民事申诉状范本
2015/05/20 职场文书
消夏晚会主持词
2015/06/30 职场文书
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python