纯js实现复制到剪贴板功能
在网页上复制文本到剪切板,一般是使用JS+Flash结合的方法,网上有很多相关文章介绍。随着 HTML5 技术的发展,Flash 已经在很多场合不适用了,甚至被屏蔽。本文介绍的一款JS插件,实现了纯JS方法复制文本到剪切板。
插件名是Clipboard.js,该插件不依赖 Flash,而是依赖于最新HTML5推出 Selection API 和 execCommand API。
execCommand 支持以下浏览器:Chrome浏览器42+,火狐41+,IE9+。Safari目前仍不支持cut和copy指令。
安装
Github:
https://github.com/zenorocha/clipboard.js
可以通过npm方式安装:
npm install clipboard --save
或者bower:
bower install clipboard --save
当然,也可以直接下载ZIP包:https://github.com/zenorocha/clipboard.js/archive/master.zip
开始使用
首先需要在页面引入:
<script src="dist/clipboard.min.js"></script>
示例
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>clipboard示例</title>
<script src="../dist/clipboard.min.js"></script>
</head>
<body>
<!--data-clipboard-text属性的值将会被复制-->
<div id="btn" class="js-copy" data-clipboard-text="我是被复制的内容啊">
<span>点击复制</span>
</div>
<script>
var btn = document.getElementById('btn');
var clipboard = new Clipboard(btn);//实例化
//复制成功执行的回调,可选
clipboard.on('success', function(e) {
console.log(e);
});
//复制失败执行的回调,可选
clipboard.on('error', function(e) {
console.log(e);
});
</script>
</body>
</html>
点击页面的点击复制就可以复制内容到剪切板了,console.log(e)可以打印出里面的内容:
Object {action: "copy", text: "我是被复制的内容啊", trigger: div#btn.js-copy}
用法
从属性里复制内容
Clipboard.js使用起来非常简单,默认会复制data-clipboard-text属性里的值,你可以把需要复制的文本放在里面。
上面我们使用document.getElementById获取对象,还可以:
//直接通过ID
var clipboard = new Clipboard('#btn');
//直接通过class
var clipboard = new Clipboard('.js-copy');
//直接通过标签也可以找到
var clipboard = new Clipboard('div');
对于多处需要用到复制功能的:
<div class="js-copy" data-clipboard-text="text1">
<div class="js-copy" data-clipboard-text="text2">
<div class="js-copy" data-clipboard-text="text3">
同样通过class查找:
//直接通过class
var clipboard = new Clipboard('.js-copy');
我们无需去设置点击事件。
从另外一个元素复制内容
示例:
<!-- Target -->
<textarea id="bar">Mussum ipsum cacilds...</textarea>
<!-- Trigger -->
<button class="js-copy" data-clipboard-target="#bar">复制到剪切板</button>
上面的data-clipboard-target="#bar"属性定义了复制时将复制id="bar"的内容。
当然,也可以在JS里指定:
var clipboard = new Clipboard('.js-copy',{
target: function() {
return document.querySelector('#bar');
}
});
JS里指定复制的内容
<button class="js-copy" data-clipboard-target="#bar">复制到剪切板</button>
<script>
var clipboard = new Clipboard('.js-copy', {
text: function() {
return '这里被复制的内容';
}
});
</script>
将直接复制text里指定的内容。
剪切功能(cut)
上面默认都实现了剪切功能。还可以指定是复制(copy)还是剪切(cut)。
在html里指定:
<button class="js-copy" data-clipboard-action="copy">复制</button>
<button class="js-copy" data-clipboard-action="cut">剪切</button>
通过data-clipboard-action属性指定。
高级选项
你可以设置回调方法供Clipboard使用:
new Clipboard('.btn', {
target: function(trigger) {
return trigger.nextElementSibling;
}
});
这里的target接受一个回调函数。同样,text也支持接受一个回调函数。
new Clipboard('.btn', {
text: function(trigger) {
return trigger.getAttribute('aria-label');
}
});
清理Clipboard对象:
var clipboard = new Clipboard('.btn');
clipboard.destroy();
浏览器支持
Clipboard.js 基于 Selection 和 execCommand APIs . 第二个API仅被下面浏览器支持:
![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|
| 42+ ✔ | 41+ ✔ | 9+ ✔ | 29+ ✔ | Nope ✘ |
Safari目前还不支持execCommand提供的复制/剪切操作,包括移动端。
其它
一般建议全局初始化Clipboard。全部使用相同的class,如.js-clipboard。
$(function(){
/*
* 复制到剪切板
* @see https://github.com/zenorocha/clipboard.js
*/
if(typeof Clipboard != 'function'){
return false; /*避免未引入Clipboard抛错*/
}
var clipboard = new Clipboard('.js-clipboard');
clipboard.on('success', function(e) {
alert('复制成功');
});
});
推荐阅读
1、clipboard.js中文网 — 纯JS实现复制文本到剪切板,无需Flash,轻量级JavaScript库
http://me.52fhy.com/doc/clipboardjs/
2、clipboard.js — Copy to clipboard without Flash
https://clipboardjs.com/
纯js实现复制到剪贴板功能的更多相关文章
- 【转】js实现复制到剪贴板功能,兼容所有浏览器
两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...
- 【原】js实现复制到剪贴板功能,兼容所有浏览器
两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...
- 黄聪:JS实现复制到剪贴板功能,兼容所有浏览器(转)
两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...
- js实现复制到剪贴板功能,兼容所有浏览器
http://www.cnblogs.com/PeunZhang/p/3324727.html https://github.com/zeroclipboard/ZeroClipboard 复制链接到 ...
- JS pc端和移动端共同实现复制到剪贴板功能实现
JS pc端和移动端实现复制到剪贴板功能实现 在网页上复制文本到剪切板,一般是使用JS+Flash结合的方法,网上有很多相关文章介绍.随着 HTML5 技术的发展,Flash 已经在很多场合不适用了, ...
- Zero Clipboard - 跨浏览器兼容的“复制到剪贴板”功能
开发中经常会用到复制的功能,在 IE 下实现比较简单,但要想做到跨浏览器比较困难了. 本文将介绍一个跨浏览器的库类 Zero Clipboard ,它利用 Flash 进行复制,所以只要浏览器装有 F ...
- JQuery实现复制到剪贴板功能
在网页中实现复制到剪贴板功能,有两种方法, 第1种方法:使用JavaScript自带的方法,但是这种方法只能在IE下使用. document.execCommand("Copy") ...
- 【转】js插件zClip实现复制到剪贴板功能
相信这个功能大家平时上网经常能碰到,以前也没怎么留意怎么实现的,直到项目中需要. 网上一搜一大堆,单纯使用js方法也不是没有,但是由于各浏览器的安全机制不同,不是跨浏览器的.去看了几个常用的网站,都是 ...
- js插件zClip实现复制到剪贴板功能
相信这个功能大家平时上网经常能碰到,以前也没怎么留意怎么实现的,直到项目中需要. 网上一搜一大堆,单纯使用js方法也不是没有,但是由于各浏览器的安全机制不同,不是跨浏览器的.去看了几个常用的网站,都是 ...
随机推荐
- js原生实现选项卡功能
选项卡在js中是一个重要的知识点.他没有那么难,但在工作中却有重要的位置.几乎在每一个网站都能看到选项卡的实例.所以今天写一下选项卡的实现. 我们设想有三个按钮分别来控制三个盒子当我们点击当前的按钮的 ...
- android 定义 程序 Scheme 接收特定URI开启Activity
场景:通过浏览器打开URL或者扫描软件扫描URL来启动本地应用 <intent-filter> <category android:name="android.intent ...
- Only女装首页HTML+CSS代码实现
这是效果图,因为太长,缩略了. 在学习HTML和CSS基础的时候做的.自己切图下来做的. 没有什么技术含量. 源代码和图片我放在github上了, 上个链接吧: https://github.com/ ...
- webpack入门指南(转载)
什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 我们可以 ...
- java加密解压类库
java压缩类库_支持加密解压.zip public static void unzip(File zipFile, String dest, String passwd) throws ZipExc ...
- MSVCRTD.lib(mfc.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC (转)
一.问题描述 我所使用的编程环境:VS2010 出现的问题如下: MSVCRTD.lib(mfc.obj) : error LNK2019: 无法解析的外部符号_WinMain@16,该符号在函数 _ ...
- css+js回到顶部
.backToTop { display: none; width: 18px; line-height: 1.2; padding: 5px 0; background-color: #000; c ...
- 决策树 -- ID3算法小结
ID3算法(Iterative Dichotomiser 3 迭代二叉树3代),是一个由Ross Quinlan发明的用于决策树的算法:简单理论是越是小型的决策树越优于大的决策树. 算法归 ...
- MSSQL数据库中Text类型字段在PHP中被截断之解 (转)
在PHP中使用了MSSQL数据库,恰巧数据库中又使用了Text类型字段,于是问题产生了.每次从数据库中查询得到的数据总是被莫名的截断,一开始是以为我使用的PHP框架中对字符串的长度有所限制,后来发现这 ...
- redis/php redis扩展 安装
作者:silenceper 日期:2013-10-03 原文地址: http://silenceper.com/archives/952.html 我是在CentOS 6.3 中进行的. 使用到的软件 ...




