最近在做一个的智能客服Web端浏览器应用,其中有一项需求是客户在获取系统返回的

答案后点击“复制答案”按钮将答案复制到系统剪切板。本以为这是一个小case,但是发现如果

要对各种主流浏览器都有良好的兼容性并不简单。原因在于出于安全原因,大多数现代浏览

器都未提供通用的剪贴板复制接口(或即便有,也默认被禁用)。

  上网搜索了一下,现有的方案大致有两种:

  一:使用原生javascript中window.clipboardData实现复制到剪贴板功能;

  二:使用Zero Clipboard库;

  在尝试了之后发现现有的方案都不能满足需求。

方案一仅仅支持ie浏览器,在firefox,chrome浏览器上则不起作用。

方案二则是现有绝大多数网站(包括github等)所采取的方案,ZeroClipboard是国外大神开发的一个

用于剪贴板复制的 JS 插件,它是基于 Flash 来实现跨浏览器的复制功能的。当我们使用 ZeroClipboard

的时候,它会悄悄隐藏一个小小的 Flash 影片(swf),不会对我们的用户界面造成影响。我们只需要借助

它实现复制功能就行了。

  ZeroClipboard 中的 "Zero" 指的就是"不可见,零干扰"。

  对此感兴趣的可以参考 http://my.oschina.net/shniu/blog/298406?p=1

  但是在现代浏览器中,flash逐渐没落,firefox浏览器默认不开启flash,所以Zero Clipboard在

兼容方面也表现不佳。

  那么,对于复制到剪切板这种简单的操作有没有一种实现简单,兼容性良好的解决方案呢?有的!那就是github

上的开源项目clipboard.js(官网:http://zenorocha.github.io/clipboard.js/) 官网对于clipboard.js的介绍

非常简单:

  A modern approach to copy text to clipboard No Flash. No dependencies. Just 3kb gzipped

  Copying text to the clipboard shouldn't be hard. It shouldn't require dozens of steps to configure

or hundreds of KBs to load. But most of all, it shouldn't depend on Flash or any bloated framework.

That's why clipboard.js exists.(拷贝文本到剪切板不应该复杂,它不应该需要许多步骤以及几百KB的文件,另

外,它不应该依靠flash以及其他框架,这就是clipboard存在的原因)

  使用clipboard简单快捷,并且从官网下载下来的zip格式压缩包里有非常实用的demo,举一个简单的例子:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>target-div</title>
</head>
<body>
<!-- 1. Define some markup -->
<div>hello</div>
<button class="btn" data-clipboard-action="copy" data-clipboard-target="div">Copy</button> <!-- 2. Include library -->
<script src="../dist/clipboard.min.js"></script> <!-- 3. Instantiate clipboard -->
<script>
var clipboard = new Clipboard('.btn'); clipboard.on('success', function(e) {
console.log(e);
}); clipboard.on('error', function(e) {
console.log(e);
});
</script>
</body>
</html>

非常简单吧,我们只需下面四步:

1.引入clipboard.min.js文件

2.选择一个可以确定被拷贝元素的选择器,本例中使用用的是基本的标签选择器<div>,当然也可以使用id选择器 class选择器等等

3.定义一个button按钮,注意按钮的属性:

  data-clipboard-action="copy" data-clipboard-target="div"
  其中data-clipboard-target属性就是第二步你定义的选择器

4.书写js,建立clipboard对象以及复制后执行的方法

OK,这样功能就完成了,点击按钮后就会发现div的内容已经拷贝到剪切板了。

 
 

使用clipboard.js复制页面内容到剪切板的更多相关文章

  1. clipboard.js实现页面内容复制到剪贴板

    clipboard.js实现复制内容到剪切板,它不依靠flash以及其他框架,应用起来比较简单 <input type="text" name="copy_txt& ...

  2. 使用ZeroClipboard 复制指定内容到剪切板

    有些时候,我们希望让用户在网页上完成某个操作就能自动将指定的内容复制到用户计算机的剪贴板中.但是出于安全原因,大多数现代浏览器都未提供通用的剪贴板复制接口(或即便有,也默认被禁用).只有IE浏览器可以 ...

  3. 使用clipBoard.js进行页面内容复制

    官方网址: https://clipboardjs.com/

  4. js实现复制文本内容到剪切板

    function copyUrl() { var Url2=document.getElementById("url").innerText; var oInput = docum ...

  5. js+flash(as3)实现复制文字内容到剪切板实例

    /* SWFObject v2.2 swfobject.js */ var swfobject=function(){var D="undefined",r="objec ...

  6. 一段js实现复制文本内容到剪切板

    <script type="text/javascript"> function copyUrl2() { var Url2=document.getElementBy ...

  7. Shell——Linux/Mac 终端复制文件内容到剪切板

    pbcopy < filename 如: pbcopy < README.md 效果如下: 说明:上图中  # gitskills   即README.md 中内容.

  8. js拷贝指定内容到剪切板

    function copyTextToClipboard(text) { var textArea = document.createElement("textarea"); te ...

  9. windows 复制 文本文件内容 到剪切板

    shell  打开 type filename | clip

随机推荐

  1. Android 时间戳简单转化

    时间戳就是如1377216000000 这种格式我们在mysql数据库中会经常用到把时间转换成时间戳或把时间戳转换成日期格式了,下面我来介绍安卓中时间戳操作转换方法. 一.原理 时间戳的原理是把时间格 ...

  2. eclipse 中使用tomcat

    最近写了个商品搜索模块,要做成tomcat服务,以前只关注算法,从来没有使用过tomcat,这次上网上查了些资料还搞定(小公司真是锻炼人啊,以前我从来不考虑这些服务问题). 1.tomcat 环境的搭 ...

  3. xpath选择器使用

    简单说,xpath就是选择XML文件中节点的方法. 所谓节点(node),就是XML文件的最小构成单位,一共分成7种. - element(元素节点)- attribute(属性节点)- text ( ...

  4. EasyUi datagrid 表格分页例子

    1.首先引入 easyui的 css 和 js 文件 2.前台 需要写的js //源数据 function Async(action,args,callback){  $.ajax({  url: a ...

  5. matlab函数集锦

    matlab函数集锦 matlab函数集锦ISFINITE(X), ISINF(X), or ISNAN(X)pwd 当前目录eval 执行matlab函数CONV2(  ,'same')  卷积F  ...

  6. hdu 4405 Aeroplane chess(简单概率dp 求期望)

    Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  7. npm使用过程中的一些错误解决办法及npm常用命令

    node,npm在前端开发流程中提供了非常完善的自动化工具链,但是同样由于其复杂性导致有很多奇奇怪怪的问题.本文将记录使用过程中出现的一些问题及其解决方法备案. 国内由于gfw问题,导致很多国外的网站 ...

  8. git plumbing 更加底层命令解析-深入理解GIT

    原文: http://rypress.com/tutorials/git/plumbing 本文详细介绍GIT Plumbing--更加底层的git命令,你将会对git在内部是如何管理和呈现一个项目r ...

  9. SharePoint的实体生成

    生成Linq实体 使用SPMetal工具生成Linq to SharePoint实体 工具安装目录: C:\Program Files\Common Files\Microsoft Shared\We ...

  10. JS Array常用方法indexOf/filter/forEach/map/reduce详解

    Array共有九个方法   Array.prototype.indexOf Array.prototype.lastIndexOf Array.prototype.every Array.protot ...