使用clipboard.js复制页面内容到剪切板

  最近在做一个的智能客服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,举一个简单的例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>target-div</title>
 6 </head>
 7 <body>
 8     <!-- 1. Define some markup -->
 9     <div>hello</div>
10     <button class="btn" data-clipboard-action="copy" data-clipboard-target="div">Copy</button>
11
12     <!-- 2. Include library -->
13     <script src="../dist/clipboard.min.js"></script>
14
15     <!-- 3. Instantiate clipboard -->
16     <script>
17     var clipboard = new Clipboard(‘.btn‘);
18
19     clipboard.on(‘success‘, function(e) {
20         console.log(e);
21     });
22
23     clipboard.on(‘error‘, function(e) {
24         console.log(e);
25     });
26     </script>
27 </body>
28 </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的内容已经拷贝到剪切板了。



本页版权归作者和博客园所有,转载请标明出处。

时间: 2024-10-05 04:27:50

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

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

js 部分 function copyUrl() { var Url2=document.getElementById("biao1").innerText; var oInput = document.createElement('input'); oInput.value = Url2; document.body.appendChild(oInput); oInput.select(); // 选择对象 document.execCommand("Copy")

js中复制文本内容到剪切板

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 <script type="text/javascript"> 6 function copyUrl2() 7 { 8 var Url2=document.getElementById("biao1").innerText; 9 var oInput = document.create

js拷贝指定内容到剪切板

function copyTextToClipboard(text) { var textArea = document.createElement("textarea"); textArea.style.background = 'transparent'; textArea.value = text; document.body.appendChild(textArea); textArea.select(); try { var successful = document.exe

zclip 复制内容到剪切板

直接上代码 </pre><pre code_snippet_id="411566" snippet_file_name="blog_20140630_3_1654861" name="code" class="html"><!DOCTYPE html> <html> <head> <title>ZeroClipboard Test</title>

C# 复制内容到剪切板

Clipboard.Clear();//清空剪切板内容 Clipboard.SetData(DataFormats.Text, "复制内容");//复制内容到剪切板

Zclip复制页面内容到剪贴板兼容各浏览器

Zclip:复制页面内容到剪贴板兼容各浏览器 WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮,点击这个复制按钮,内容将会被复制,然后用户可以粘贴到想粘贴的地方,下面介绍一种使用Zclip实现的兼容主流浏览器的方式. 利用插件来写的话就比较简单,源码下载 <html> <head> <title>Index</title> <script src=

如是使用JS实现页面内容随机显示

之前有个客户咨询我,因为他们公司的业务员有多个人,但公司网站的联系方式板块里只够放一个人的信息,所以就想能不能实现这个联系方式信息随机显示,对于业务或客服人员来说也能做到分配均匀公平.本文我们将和大家一起分享,如何使用js控制实现页面内容随机显示. 这里我以本地的蝉知建站系统为例,给大家演示一下实现流程. 首先将想要显示的不同内容分别放到不同的盒子里(div),并用ID属性标记好.例如: <div id="p1"> <p>联系人:张三</p> <

如何使用JS实现页面内容随机显示

之前有个客户咨询我,因为他们公司的业务员有多个人,但公司网站的联系方式板块里只够放一个人的信息,所以就想能不能实现这个联系方式信息随机显示,对于业务或客服人员来说也能做到分配均匀公平.本文我们将和大家一起分享,如何使用js控制实现页面内容随机显示. 这里我以本地的蝉知建站系统为例,给大家演示一下实现流程. 首先将想要显示的不同内容分别放到不同的盒子里(div),并用ID属性标记好.例如: 1 <div id="p1"> 2 <p>联系人:张三</p>

Clipboard.js实现复制内容到剪切板

<script type="text/javascript"> var clipboard1 = new Clipboard('.bt01'); clipboard1.on('success', function (e) { alert("Copy Url Success!"); e.clearSelection(); }); </script> <div class="mt5"><img src=&qu