使用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,举一个简单的例子:
<!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复制页面内容到剪切板的更多相关文章
- clipboard.js实现页面内容复制到剪贴板
clipboard.js实现复制内容到剪切板,它不依靠flash以及其他框架,应用起来比较简单 <input type="text" name="copy_txt& ...
- 使用ZeroClipboard 复制指定内容到剪切板
有些时候,我们希望让用户在网页上完成某个操作就能自动将指定的内容复制到用户计算机的剪贴板中.但是出于安全原因,大多数现代浏览器都未提供通用的剪贴板复制接口(或即便有,也默认被禁用).只有IE浏览器可以 ...
- 使用clipBoard.js进行页面内容复制
官方网址: https://clipboardjs.com/
- js实现复制文本内容到剪切板
function copyUrl() { var Url2=document.getElementById("url").innerText; var oInput = docum ...
- js+flash(as3)实现复制文字内容到剪切板实例
/* SWFObject v2.2 swfobject.js */ var swfobject=function(){var D="undefined",r="objec ...
- 一段js实现复制文本内容到剪切板
<script type="text/javascript"> function copyUrl2() { var Url2=document.getElementBy ...
- Shell——Linux/Mac 终端复制文件内容到剪切板
pbcopy < filename 如: pbcopy < README.md 效果如下: 说明:上图中 # gitskills 即README.md 中内容.
- js拷贝指定内容到剪切板
function copyTextToClipboard(text) { var textArea = document.createElement("textarea"); te ...
- windows 复制 文本文件内容 到剪切板
shell 打开 type filename | clip
随机推荐
- MAC的一些实用
重置Dock, Launchpad defaults write com.apple.dock ResetLaunchPad -bool true; killall Dock;
- Ubuntu 13.10 中文字体设置
据我查到的资料,在默认设置下,Ubuntu 13.10 中文使用的是文泉驿正黑.我总觉得它的效果有些发虚,模糊,不满意. (貌似是Ubuntu从13.04开始取消了默认的微米黑,回退为之前的正黑.这我 ...
- ORA-00911无效字符报错
今天在修改缺陷时遇到一个问题,更新数据库字段时一直报错:ORA-00911.sql脚本如下: '; '; '; 该脚本在数据库中可以执行,但是从程序中去访问数据库修改值时就会报错. 报错的原因在于,更 ...
- The absolute uri: http://struts.apache.org/tags-bean cannot be resolved in either web.xml or the jar files deployed with this application
在一个tomcat中部署了一个struts-1.3.10的web项目,但是没有吧struts-1.3.10的lib中的jar包放进tomcat/lib中,所以导致了这个错误(访问该项目的页面时)
- tomcat manager app 和 host maganger
当你以为你了解某个东西时,其实你不了解它.比如tomcat也可以像jboss一样有用户名和密码 就在apache-tomcat-8.0.21\conf\tomcat-users.xml里配置用户名和密 ...
- USACO Section 2.4: Overfencing
这题因为各种琐事耽耽搁搁做了2天,也出了挺多错误,最后出了一个结论:像这种有对neighbor有通路的图形用一个4个位表示4个方向的int进行位运算比较靠谱. /* ID: yingzho1 LANG ...
- c# 计算1-100之间的所有奇数的和
求1-100之间所有奇数整数和: class Program { static void Main(string[] args) { ,); Console.WriteLine("1-100 ...
- Just Have a Change
If you still do something meaningless or live a purposeless and empty life. Now, it may be time for ...
- Web Servers in Visual Studio for ASP.NET Web Projects
https://msdn.microsoft.com/en-us/library/58wxa9w5(v=vs.120).aspx When you develop web projects in Vi ...
- 安卓发展史以及安卓和苹果对比PPT
此PPT由我们小组协力完成,介绍了Android的发展史以及android与苹果的一些比较.概述了android发展至今的一系列版本,功能的日益完善,它的强大性,灵活性,公开性使其拥有吸引客服的绝大魅 ...