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 相关文章推荐
Mootools 1.2 手风琴(Accordion)教程
Sep 15 Javascript
jQuery EasyUI API 中文文档 搜索框
Sep 29 Javascript
jquery给图片添加鼠标经过时的边框效果
Nov 12 Javascript
jQuery之字体大小的设置方法
Feb 27 Javascript
javascript中数组array及string的方法总结
Nov 28 Javascript
ES6中非常实用的新特性介绍
Mar 10 Javascript
JavaScript动态数量的文件上传控件
Nov 18 Javascript
TypeScript学习之强制类型的转换
Dec 27 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
Mar 09 Javascript
vue实现多级菜单效果
Oct 19 Javascript
为react组件库添加typescript类型提示的方法
Jun 15 Javascript
让JavaScript代码更加精简的方法技巧
Jun 01 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
DISCUZ 分页代码
2007/01/02 PHP
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
PHP Session机制简介及用法
2014/08/19 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
php实现微信支付之现金红包
2018/05/30 PHP
PHP实现的策略模式示例
2019/03/20 PHP
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
[05:24]TI9采访——教练
2019/08/24 DOTA
Python实现基于权重的随机数2种方法
2015/04/28 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
统计员岗位职责
2013/11/14 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
务工证明怎么写
2015/06/18 职场文书
母亲节感言
2015/08/03 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL