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中万恶的function实例分析
May 25 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
May 28 Javascript
javascript委托(Delegate)blur和focus用法实例分析
May 26 Javascript
JS关闭窗口时产生的事件及用法示例
Aug 20 Javascript
基于vuejs+webpack的日期选择插件
May 21 Javascript
如何获取元素的最终background-color
Feb 06 Javascript
angular 基于ng-messages的表单验证实例
May 04 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
May 09 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 Javascript
bootstrap下拉分页样式 带跳转页码
Dec 29 Javascript
vue.js多页面开发环境搭建过程
Apr 24 Javascript
微信小程序实现按字母排列选择城市功能
Nov 25 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、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
Python入门_条件控制(详解)
2017/05/16 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
转让协议书范本
2014/04/15 职场文书
小学学校评估方案
2014/06/08 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS