最近,一些项目中用到监听用户复制。剪切的操作。
案例1、在PC端,当用户获得一个京东卡的使用券,当用户使用ctrl + C复制得到的使用券时,将使用券的代号复制到粘贴板,以便于用户ctrl+v进行粘贴。
 
 
案例2:在移动端(android 和 iOS端),用户获得邀请码之后,可以使用一键复制的功能,将邀请码复制到剪切板,然后在app中进行兑换。
 
 

使用jQuery中的方法监听用户的剪切、复制、粘贴的行为

$("#cut").on("cut",function(){
alert("剪切");
});
$("#copy").on("copy",function(){
alert("复制");
});
$("#paste").on("paste",function(){
alert("粘贴");
});
这些行为包括使用键盘的ctrl + c操作,或者右击鼠标—>复制等操作。
<input type="text" value="剪切板内容" id="clipboard"/>
$("#clipboard").on("paste",function(e){
var eve = e.originalEvent;//所有js的原生事件都被保存到originalEvent中
var cp = eve.clipboardData;//从originalEvent取出剪切板的事件
var clipboardData = window.clipboardData||e.originalEvent.clipboardData; //兼容ie||chrome
var data = clipboardData.getData('Text');//获取剪切板内容
console.log(data);
});
clipboardData对象
 
clipboardData是JavaScript剪切板对象,该对象提供了3个常用方法
 
 
clipboardData兼容性
 
经过尝试,clipboardData对象内兼容大部分px浏览器,像chrome,firefox、ie等,但是在手机端兼容性不是很好,目前clipboardData在ios上的safari浏览器无效,为解决移动端这个问题,我们引用一个js插件——clipboard.js
 
clipboard.js插件
 
介绍
clipboard.js依赖于HTML5退出的Selection API和execCommand API
 
 
使用
在页面中引入js
<script src="dist/clipboard.min.js"></script>

使用clipboard.js的自定义属性

<!--使用data-clipboard-target属性指定被复制的标签-->
<!--使用data-clipboard-action属性指定一些操作,copy(复制),cut(剪切)-->
<!--注意:cut 操作仅适用于<textarea>和<input>-->
<div style="margin:2em">
<textarea id="id_text"></textarea>
<button type="button" id="id_copy"
data-clipboard-target="#id_text"
data-clipboard-action="copy">点击复制
</button>
</div>
var clipboard = new Clipboard("#id_copy");
clipboard.on("success",function (element) {//复制成功的回调
console.info("复制成功,复制内容: " + element.text);
});
clipboard.on("error",function (element) {//复制失败的回调
console.info(element);
})
});

高级用法:

//清理Clipboard对象
var clipboard = new Clipboard('.btn');
clipboard.destroy();

浏览器兼容

 

js复制内容到剪切板,兼容pc和手机端,支持Safari浏览器的更多相关文章

  1. js复制内容到剪切板

    注意第一部分的内容不兼容Safari,全兼容的请使用第二部分方法 第一部分 查看demo请点  这里. 原生js复制指定内容到剪切板,超简单的实现方式, 实现思路如下: 1.创建一个input,把想要 ...

  2. 简单实现兼容各大浏览器的js复制内容到剪切板

    因为网站文章需要提供几个按钮,单击后实现复制文章内容到剪贴板. 在网上搜索了很多内容,发现都比较乱这里自己整理下,分享给大家 效果图如下: 之前使用的是window.clipboardData.set ...

  3. 在多浏览器使用JS复制内容到剪切板,无需插件

    最近在学习DHTMLX,下载了一些JS源码,使用谷歌浏览器,在学习dhtmlxGrid部分进行复制表格内容时,发现,在线版的可以复制成功,而本地的不可以复制,报类似访问剪切板错误,经查找原因,原来是谷 ...

  4. 原生js 复制内容到剪切板

    代码: function copyHandle(content){ let copy = (e)=>{ e.preventDefault() e.clipboardData.setData('t ...

  5. js 复制内容到剪切板

    function oCopy(objname){//只兼容IE var obj = $(objname); obj.select(); js=obj.createTextRange(); js.exe ...

  6. JS禁止右键查看源码,禁止复制,复制内容到剪切板

    有时候我们希望自己的网页源码不被查看,这时需要关掉鼠标的右击事件;有时候我们也希望禁止选择页面内容Ctrl+C复制. 1.禁止右键查看源码; <script> //设置右键事件 funct ...

  7. javascript复制内容到剪切板/网页上的复制按钮的实现

    javascript复制内容到剪切板/网页上的复制按钮的实现:DEMO如下 <!doctype html> <html> <head> <meta chars ...

  8. js实现复制内容到剪切板,兼容pc和手机端,支持Safari浏览器

    Javascript原生有一些事件:copy.paste.cut, 这些事件可以作用的目标元素: 能获得焦点的元素 (如contentEditable内容能编辑或者可以选中的元素),或者是<bo ...

  9. 兼容安卓和ios实现一键复制内容到剪切板

    实现代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <m ...

随机推荐

  1. 开放才能进步!Angular和Wijmo一起走过的日子

    Angular 已成为广受欢迎的前端框架.去年9月份,期待已久的 Angular2 的正式版发布之后,Angular 又迎来了新一轮热潮.伴随着 Angular 这一路走来,Wijmo 一直都是第一个 ...

  2. CSS3中选择器

    ::selection选择器 <style type="text/css"> .selectColor::selection{color:#fff;background ...

  3. 计算机程序的思维逻辑 (66) - 理解synchronized

    上节我们提到了多线程共享内存的两个问题,一个是竞态条件,另一个是内存可见性,我们提到,解决这两个问题的一个方案是使用synchronized关键字,本节就来讨论这个关键字. 用法 synchroniz ...

  4. devexpress chartcontrol实现非连续点数据的显示

    1.先上图: 其中暗红的曲线中数据不连续的,在实际开发中可能也会遇到这种情况,由于断电或其他原因导致部分日期数据无法采集,如果按一般情况来显示可能会显示如下图所示: 图中可以看出非连续曲线中,3月5号 ...

  5. BZOJ 1103: [POI2007]大都市meg(dfs序,树状数组)

    本来还想链剖的,结果才发现能直接树状数组的= = 记录遍历到达点与退出点的时间,然后一开始每个到达时间+1,退出时间-1,置为公路就-1,+1,询问直接点1到该点到达时间求和就行了- - CODE: ...

  6. nodejs 代码设计模式1:同步函数变异步

    同步函数变异步 1 问题: 1.1 碰到需要调用你刚正在创建的对像. function createServer(data, cb) { data.num = 1; cb(); return data ...

  7. 第23篇 js快速学习知识

    前面说了js的一些高级方面的基础知识,这些都是比较容易出错的和比较难理解的东西,除了这些之外其它的知识都比较简单了,基础学好了,扩展起来就是小意思.今天说说js方面可以快速学习和入门的知识. 1.闭包 ...

  8. webpack 引用 jquery + bootstrap 报错解决

    webpack 引用 jquery + bootstrap , error : jQuery is not defind 在webpack.dev.conf.js plugins[] 加入 new w ...

  9. 未来工厂——电器行业ERP案例

    江苏科兴电器有限公司位于全国著名的“银杏之乡”泰兴市南首,主要生产35kV及以下电流.电压互感器等系列产品.产品多次经国家及省市技术监督部门抽检合格,广泛应用于国家重点工程.“COSINE”商标荣获泰 ...

  10. hadoop2.7.2完全分布式环境搭建

      1.先使用groupadd hadoop 建立hadoop用户组 2.新建用户,useradd -d /usr/hadoop -g hadoop -m hadoop (新建用户hadoop指定用户 ...