使用 ZeroClipboard 可以简单的将内容复制到剪贴板,通过 Adobe Flash 和 JavaScript 来实现。“Zero” 意义为这个类库没有界面,界面需要由你来建立。

在线实例

实例预览 ZeroClipboard 复制到剪贴板 简单示例

使用方法

载入 JavaScript 文件

  1. <script src="ZeroClipboard.js"></script>
复制

如果 ZeroClipboard.swf 与页面不在同一个目录下,可以设置路径

  1. // 全局设置 
  2. ZeroClipboard.setDefaults({ 
  3.   moviePath: '/path/ZeroClipboard.swf' 
  4. }); 
  5.  
  6. // 参数中设置 
  7. var clip=new ZeroClipboard(document.getElementById("copy-button"), { 
  8.   moviePath: '/path/ZeroClipboard.swf' 
  9. }); 
复制

调用

可以传递一个元素或者一个元素数组。(这里使用 jQuery 获取元素的方式)

  1. // 直接调用 
  2. var clip=new ZeroClipboard($('#my-button')); 
复制

AMD

如果你使用 RequireJScurl.jsseajs 等 AMD 规范的模块加载器,那么需要设置模块的 ID 或者路径的值到 amdModuleId,才能正常使用 ZeroClipboard。例:

  1. define(['path/to/zero-clipboard'], function(ZeroClipboard){ 
  2.   ZeroClipboard.setDefaults({ 
  3.     amdModuleId: 'path/to/zero-clipboard' 
  4.   }); 
  5. }); 
复制

或者设置路径,RequireJS 的例子:

  1. requirejs.config({ 
  2.   paths:{ 
  3.     "ZeroClipboard":"path/to/zero-clipboard" 
  4.   } 
  5. }); 
  6.  
  7. define(["ZeroClipboard"],function(ZeroClipboard) { 
  8.   ZeroClipboard.setDefaults({ 
  9.     amdModuleId: 'ZeroClipboard' 
  10.   }); 
  11. }); 
复制

参数说明

  1. new ZeroClipboard(elements [, options])
复制

options 参数说明

名称 默认值 说明
swfPath "ZeroClipboard.swf" Flash 文件路径,默认的 swf 文件路径与 ZeroClipboard.js 相同
trustedDomains window.location.host ? [window.location.host] : [] 可信任的域(字符串或者字符串的数组)
cacheBust true  
forceEnhancedClipboard false  
flashLoadTimeout 30000 加载 Flash 的超时时间,如果不需要,可以设置为 0。单位(ms)
autoActivate true  
bubbleEvents true  
containerId "global-zeroclipboard-html-bridge"  
containerClass "global-zeroclipboard-container"  
swfObjectId "global-zeroclipboard-flash-bridge"  
hoverClass "zeroclipboard-is-hover" 鼠标移上时给元素增加的 Class
activeClass "zeroclipboard-is-active" 选定是给元素增加的 Class
forceHandCursor false  
title null  
zIndex 999999999  

参数 allowScriptAccess 选项的注意事项

1.1.7 及以下的版本,allowScriptAccess 的默认值为 always。意味着允许 "ZeroClipboard.swf" 文件托管的其他的域。为了提高安全性,1.1.7 之后的版本,allowScriptAccess 的默认值为 sameDomain,只允许 "ZeroClipboard.swf" 在相同域之下。

如果你是从 1.1.7 或更低的版本升级到 1.1.7 以上版本时,需要将 "ZeroClipboard.swf" 保存一份到相同域之下,或者设置 allowScriptAccess 的值为 always。

关于 allowScriptAccess 的更多信息,可以参考官方文档

Data 属性

名称 说明
data-clipboard-target 元素ID。查找该元素后,尝试复制元素的 .value 或 .textContent 或 .innerText 的值
data-clipboard-text 默认复制的内容。

同时设置 data-clipboard-target 和 data-clipboard-text 两个属性时,只有在找不到 clipboard-target 的值时才会选用 clipboard-text

即使获取到 clipboard-target 的值为空,也不会选用 clipboard-text

API 方法

名称 说明
glue(dom) 绑定到元素
reposition() 调整位置
on("Event",my_load_handler) 绑定事件
off("Event",my_load_handler) 取消已绑定的事件

事件

通过 API 的方法 on() 来绑定

名称 示例 说明
load clip.on("load",function(client,args){...}); Flash 加载完成时的事件。args 参数包含以下属性:

flashVersion:当前 Flash 的版本号

mouseover clip.on("mouseover",function(client,args){...}); 鼠标移入时的事件。args 参数包含以下属性:

flashVersion:当前 Flash 的版本号

altKey:是否按住 Alt 键

ctrlKey:是否按住 Ctrl 键

shiftKey:是否按住 Shift 键

mouseout clip.on("mouseout",function(client,args){...}); 鼠标移出时的事件。args 参数包含以下属性:

flashVersion:当前 Flash 的版本号

altKey:是否按住 Alt 键

ctrlKey:是否按住 Ctrl 键

shiftKey:是否按住 Shift 键

mousedown clip.on("mousedown",function(client,args){...}); 鼠标按下时的事件。args 参数包含以下属性:

flashVersion:当前 Flash 的版本号

altKey:是否按住 Alt 键

ctrlKey:是否按住 Ctrl 键

shiftKey:是否按住 Shift 键

mouseup clip.on("mouseup",function(client,args){...}); 鼠标弹起时的事件。args 参数包含以下属性:

flashVersion:当前 Flash 的版本号

altKey:是否按住 Alt 键

ctrlKey:是否按住 Ctrl 键

shiftKey:是否按住 Shift 键

complete clip.on("complete",function(client,args){...}); 成功复制内容时的事件。args 参数包含以下属性:

flashVersion:当前 Flash 的版本号

altKey:是否按住 Alt 键

ctrlKey:是否按住 Ctrl 键

shiftKey:是否按住 Shift 键

text:复制的内容

noflash clip.on("noflash",function(client,args){...}); 没有检测到 Flash 时的事件。
wrongflash clip.on("wrongflash",function(client,args){...}); Flash 版本低于要求版本时的事件。ZeroClipboard 要求 Flash 10.0.0 以上的版本。
dataRequested clip.on("dataRequested",function(client,args){...}); 复制开始时的事件

ZeroClipboard 复制到剪贴板的更多相关文章

  1. 使用ZeroClipboard解决跨浏览器复制到剪贴板的问题

    Zero Clipboard的实现原理Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是 Flash ,这样将需要的内容传入Flash,再通过Flas ...

  2. ZeroClipboard 插件实现文本复制到剪贴板

    ZeroClipboard 的官网 点这里,github地址 点这里. 事例如下: 在引入 ZeroClipboard.js 之后, <button id="clip_button&q ...

  3. 复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题)

    复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题) 相信绝大多数人都遇到过这样的功能实现,“复制”或者“复制到剪贴板”这样的功能.但是由于各大浏览器的实现方案不一样,导致几 ...

  4. 【转】js实现复制到剪贴板功能,兼容所有浏览器

    两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...

  5. js实现复制到剪贴板功能,兼容所有浏览器

    http://www.cnblogs.com/PeunZhang/p/3324727.html https://github.com/zeroclipboard/ZeroClipboard 复制链接到 ...

  6. 【转】js插件zClip实现复制到剪贴板功能

    相信这个功能大家平时上网经常能碰到,以前也没怎么留意怎么实现的,直到项目中需要. 网上一搜一大堆,单纯使用js方法也不是没有,但是由于各浏览器的安全机制不同,不是跨浏览器的.去看了几个常用的网站,都是 ...

  7. 【原】js实现复制到剪贴板功能,兼容所有浏览器

    两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...

  8. ZeroclipboardJS+flash实现将内容复制到剪贴板实例

    Zeroclipboard 的实现原理 Zeroclipboard 利用 Flash 进行复制,之前有 Clipboard Copy 解决方案,其利用的是一个隐藏的 Flash.但最新的 Flash ...

  9. 黄聪:JS实现复制到剪贴板功能,兼容所有浏览器(转)

    两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...

随机推荐

  1. Python字符串的encode与decode

    首先要搞清楚,字符串在Python内部的表示是unicode编码. 因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unic ...

  2. AIX下如何根据端口号查找相应的进程

    1. $ netstat -Aan |grep 8080 f1000e0002321bb8 tcp 0 0 *.8080 *.* LISTEN 2. $ rmsock f1000e0002321bb8 ...

  3. HTML5移动Web开发(六)——定义一个内容策略

    通过分析工具搜集到的数据,你可以定义一个内容策略,这对已经有了一个桌面网站的人是非常有用的. 1.确认你已经把分析工具的Javascript代码嵌入到网站中.(http://www.cnblogs.c ...

  4. Deep learning:四十四(Pylearn2中的Quick-start例子)

    前言: 听说Pylearn2是个蛮适合搞深度学习的库,它建立在Theano之上,支持GPU(估计得以后工作才玩这个,现在木有这个硬件条件)运算,由DL大牛Bengio小组弄出来的,再加上Pylearn ...

  5. Sybase 数据库bcp out备份重要表数据

    bcp相当于逻辑备份,bcp out导出的文件,bcp in可以导回去. 环境:RHEL 5.5 + Sybase客户端软件 需求:在客户端(Linux)备份服务端(HP-UX)重要配置表数据 1.b ...

  6. web接口测试之GET与POST请求

    关于HTTP协议,我考虑了一下觉得没必要再花一节内容来介绍,因为网上关于HTTP协议的介绍非常详细.本着以尽量避免介绍一空洞了概念与理论来介绍接口测试,我这里仍然会给出具体实例. 在此之前先简单的介绍 ...

  7. 移植SlidingMenu Android library,和安装example出现的问题解决

    很多项目都用到类似左侧滑动菜单的效果,比如facebook,evernote,VLC for android等等,这很酷 源代码可以从GitHub的https://github.com/jfeinst ...

  8. 基于HTML5 Canvas实现工控2D叶轮旋转

    之前在拓扑上的应用都是些静态的图元,今天我们将在拓扑上设计一个会动的图元——叶轮旋转. http://www.hightopo.com/guide/guide/core/serialization/e ...

  9. 【原创】Kakfa message包源代码分析

    笔者最近在研究Kafka的message包代码,有了一些心得,特此记录一下.其实研究的目的从来都不是只是看源代码,更多地是想借这个机会思考几个问题:为什么是这么实现的?你自己实现方式是什么?比起人家的 ...

  10. HtmlAgilityPack搭配 ScrapySharp或HtmlAgilityPack.CssSelectors

    Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂的类库,但它的功能确不弱,为解析DOM已经提供了足够强大的功能支持,可以跟jQuery操作DOM媲 美:)Html A ...