定义

  剪贴板操作包括剪切(cut)、复制(copy)和粘贴(paste)这三个操作,快捷键分别是ctrl+x、ctrl+c、ctrl+v。当然也可以使用鼠标右键菜单进行操作

  关于这3个操作共对应下列6个剪贴板事件

  copy:在发生复制操作时触发

  cut:在发生剪切操作时触发

  paste:在发生粘贴操作时触发

  IE浏览器只有在文本中选定字符时,copy和cut事件才会发生。且在非文本框中(如div元素)只能发生copy事件

  firfox浏览器只有焦点在文本框中才会发生paste事件

  1. <input value="text" id="test">
  2. <script>
  3. test.onpaste= test.oncopy = test.oncut = function(e){
  4. e = e || event;
  5. test.value = e.type;
  6. return false;
  7. }
  8. </script>

  beforecopy:在发生复制操作前触发

  beforecut:在发生剪切操作前触发

  beforepaste:在发生粘贴操作前触发

  1. <input value="text" id="test">
  2. <script>
  3. test.onbeforepaste= test.onbeforecopy = test.onbeforecut = function(e){
  4. e = e || event;
  5. test.value = e.type;
  6. return false;
  7. }
  8. </script>

对象方法

  剪贴板中的数据存储在clipboardData对象中。对于IE浏览器来说,这个对象是window对象的属性;对于其他浏览器来说,这个对象是事件对象的属性

  1. e = e || event;
  2. var clipboardData = e.clipboardData || window.clipboardData;

  这个对象有三个方法:getData()、setData()和clearData ()

getData()

  getData()方法用于从剪贴板中取得数据,它接受一个参数,即要取得的数据的格式。在IE中,有两种数据格式:"text" 和 "URL"。在其他浏览器中,这个参数是一种MIME类型;不过,可以用"text"代表

  [注意]在IE浏览器中,cut和copy事件中的getData()方法始终返回null;而其他浏览器始终返回空字符串''。但如果和setDada()方法配合,就可以正常使用

  1. <input id="test" value="123">
  2. <script>
  3. test.onpaste=function(e){
  4. e = e || event;
  5. var clipboardData = e.clipboardData || window.clipboardData;
  6. test.value = '测试' + clipboardData.getData('text');
  7. return false;
  8. }
  9. </script>

setData()

  setData()方法的第一个参数也是数据类型,第二个参数是要放在剪贴板中的文本。对于第一个参数的规则与getData()相同

  在IE浏览器中,该方法在成功将文本放到剪贴板中后,返回true,否则返回false;而其他浏览器中,该方法无返回值

  [注意]在paste事件中,只有IE浏览器可以正常使用setData()方法,chrome浏览器会静默失败,而firefox浏览器会报错

  1. <input id="test" value="123">
  2. <script>
  3. test.oncopy=function(e){
  4. e = e || event;
  5. var clipboardData = e.clipboardData || window.clipboardData;
  6. clipboardData.setData('text','测试');
  7. test.value = clipboardData.getData('text');
  8. return false;
  9. }
  10. </script>

clearData()

  clearData()方法用于从剪贴板中删除数据,它接受一个参数,即要取得的数据的格式。在IE中,有两种数据格式:"text"和"URL"。在其他浏览器中,这个参数是一种MIME类型;不过,可以用"text"表示

  在IE浏览器中,该方法在成功将文本放到剪贴板中后,返回true,否则返回false;而其他浏览器该方法的返回值为undefined

  [注意]在paste事件中,chrome浏览器和IE浏览器可以正常使用setData()方法,而firefox浏览器会报错

  1. <input id="test" value="123">
  2. <script>
  3. test.oncopy=function(e){
  4. e = e || event;
  5. var clipboardData = e.clipboardData || window.clipboardData;
  6. test.value = clipboardData.clearData('text');
  7. return false;
  8. }
  9. </script>

应用

【1】屏蔽剪贴板

  通过阻止默认行为来屏蔽剪贴板。对于一些受保护的文档来说是一种选择

  1. <input value="text">
  2. <button id="test">屏蔽剪贴板</button>
  3. <script>
  4. test.onclick = function(){
  5. document.oncopy=document.oncut = document.onpaste = function(e){
  6. e = e || event;
  7. alert('该文档不允许复制剪贴操作,谢谢配合')
  8. return false;
  9. }
  10. }
  11. </script>

【2】过滤字符

  如果确保粘贴到文本框中的文本中包含某些字符,或者符合某种形式时,可以使用剪贴板事件。比如只允许粘贴数字

  1. <input id="test">
  2. <script>
  3. test.onpaste = function(e){
  4. e = e || event;
  5. var clipboardData = e.clipboardData || window.clipboardData;
  6. if(!/^\d+$/.test(clipboardData.getData('text')))
  7. return false;
  8. }
  9. }
  10. </script>

js的剪贴板事件的更多相关文章

  1. JS 从剪贴板上传图片

    用Ubuntu两年多了,习惯了Ubuntu的操作感觉比WIN用起来还爽,就一点不爽,生态应用很少,好多WIN上好用的软件在Ubuntu找不到的,希望以后的软件可以做到一次编译全平台通用. 即使用上Wi ...

  2. Node.js:events事件模块

    Nodejs的大部分核心API都是基于异步事件驱动设计的,所有可以分发事件的对象都是EventEmitter类的实例. 大家知道,由于nodejs是单线程运行的,所以nodejs需要借助事件轮询,不断 ...

  3. js动态添加事件-事件委托

    作者:白狼 出处:http://www.manks.top/javascript-dynamic-event.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...

  4. 怎么理解js中的事件委托

    怎么理解js中的事件委托 时间 2015-01-15 00:59:59  SegmentFault 原文  http://segmentfault.com/blog/sunchengli/119000 ...

  5. 深入理解DOM事件类型系列第四篇——剪贴板事件

    × 目录 [1]定义 [2]对象方法 [3]应用 前面的话 剪贴板操作可能看起来不起眼,但是却十分有用,可以增强用户体验,方便用户操作.本文将详细介绍剪贴板事件 定义 剪贴板操作包括剪切(cut).复 ...

  6. js的touch事件的实际引用

    一开始做前端页面的时候,接触的也是js,但是随后便被简单高效的jquery吸引过去,并一直使用至今. 而js,则被我主观的认为底层技术而抛弃. 直到这几天工作需要,研究移动端页面的触屏滑动事件,搜索j ...

  7. js性能优化-事件委托

    js性能优化-事件委托 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少 ...

  8. js /jquery停止事件冒泡和阻止浏览器默认事件

    1>js阻止冒泡事件 var el = window.document.getElementById("a"); el.onclick = function (e) { // ...

  9. paip.调试js 查看元素事件以及事件断点

    paip.调试js  查看元素事件以及事件断点 ff 26 +firebug 查看不出来.. 360 ,虽然也是chrome 基础,但是开发工具烂阿,也是显示不出来.. 作者Attilax  艾龙,  ...

随机推荐

  1. 洛谷P3376【模板】网络最大流 ISAP

    这篇博客写得非常好呀. 传送门 于是我是DCOI这一届第一个网络流写ISAP的人了,之后不用再被YKK她们嘲笑我用Dinic了!就是这样! 感觉ISAP是会比Dinic快,只分一次层,然后不能增广了再 ...

  2. VS2010-MFC(对话框:为对话框添加控件)

    转自:http://www.jizhuomi.com/software/151.html 上一讲创建了一个名为“Addition”的工程,目的是生成一个实现加法运算的应用程序.实现加法计算有几个必要的 ...

  3. C++中如何实现像Java中接口功能--C++抽象类(纯虚函数,虚函数)

    在Java中定义个接口,之后可以定义不同的类来实现接口,如果有个函数的参数为这个接口的话,就可以对各自的类做出不同的响应. 如: interface animal { public void info ...

  4. oracle中准确控制job的下次运行时间(next date)

    用过ORACLE的JOB的朋友也许都能够感觉到它的强大,和JAVA中的quartz有异曲同工之妙,可以少了很多的重复劳动:但是也会有许多问题,就是执行时间段和执行时间比较不容易确定. 这其实都是我们还 ...

  5. mongoDB可视化工具RoBo 3T的安装和使用

    第一步下载RoBo3T https://robomongo.org/download 第二步安装 双击安装包安装,修改安装路径,不停下一步,点击安装. 一路next,最后到了这个页面直接点击finis ...

  6. 6.Spring【AOP】XML方式

    1.AOP术语 1. Joinpoint(连接点):所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点 2. Pointcut(切入点):所谓切 ...

  7. 基于httpd2.2配置https

    本次演示使用一台主机实现,即自签自演 主机IP:192.168.1.105 开始配置: 1.创建私有CA # cd /etc/pki/CA # touch serial # touch index.t ...

  8. Spring_注解形式的配置

    1.spring配置: 扫描被下面的注解所注解的类, 把这些类直接配置为bean. 例如: @Controller @Service @Repository @Component 这四个注解 Cont ...

  9. java的四个访问权限修饰符的作用范围

  10. mysql函数,语法

    转自:http://www.cnblogs.com/kissdodog/p/4168721.html MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: ...