ie是最早支持剪辑板相关事件(并且允许javascript接入)的浏览器(鼠标右键复制)

 
相关事件:
beforecopy— Fires just before the copy operation takes place.
copy— Fires when the copy operation takes place.
beforecut— Fires just before the cut operation takes place.
cut— Fires when the cut operation takes place.
beforepaste— Fires just before the paste operation takes place.
paste— Fires when the paste operation takes place.
 
因为这个标准是比较新的,所以浏览器之间差异还是有的( In Safari, Chrome, and Firefox, the beforecopy, beforecut, and beforepasteevents fire only when the context menu for the text box is displayed 
(in anticipation of a clipboard event), but Internet Explorer fires them in that case and immediately before firing the copy, cut, and pasteevents.)
 
 beforecopy, beforecut, 和 beforepaste让你有机会在发送或者读取剪辑板数据之前修改数据,但是取消这三个事件是不会取消复制,粘贴行为的,只有取消copy,cut,paste才能取消
 
剪辑板的数据可以通过clipboardData对象获取,在ie上为window属性,其他浏览器为event属性
该对象有三个方法:
getData():   获取剪辑板的数据,接收一参数(为读取数据的格式,ie为text或URL,其他浏览器接收一个MIME类型,text会识别为text/plain)
setData():  第一个参数同上为数据类型,第二个参数为需要保存的数据
clearData() :清除数据
 
兼容:
var EventUtil = {
   getClipboardText: function(event) {
       var clipboardData = (event.clipboardData || window.clipboardData);
       return clipboardData.getData(“text”);
    },
    setClipboardText: function(event, value){
       if (event.clipboardData){
              return event.clipboardData.setData(“text/plain”, value);
       } else if (window.clipboardData){
              return window.clipboardData.setData(“text”, value);
       }
    },
};
 
例子:当你某个输入框只允许数字
EventUtil.addHandler(textbox, “paste”, function(event){
event = EventUtil.getEvent(event);
var text = EventUtil.getClipboardText(event);
 
if (!/^\d*$/.test(text)){
     EventUtil.preventDefault(event);
}
});
Firefox, Safari, and Chrome 只有在paste事件才允许接入 getData()  方法
 
如果浏览器不支持的,例如opera,那么要屏蔽复制粘贴行为,就需要屏蔽复制粘贴等键盘操作和屏蔽右键弹出菜单(context menu)
 
HTML5有一个contextmenu事件,可以用来控制这个菜单怎么出现的,阻止默认菜单,用自己模仿的取代:
EventUtil.addHandler(window, “load”, function(event){
var div = document.getElementById(“myDiv”);
 
EventUtil.addHandler(div, “contextmenu”, function(event){
event = EventUtil.getEvent(event);
EventUtil.preventDefault(event);
 
var menu = document.getElementById(“myMenu”);       //自己用div做的菜单
menu.style.left = event.clientX + “px”;
menu.style.top = event.clientY + “px”;
menu.style.visibility = “visible”;
});
 
EventUtil.addHandler(document, “click”, function(event){
document.getElementById(“myMenu”).style.visibility = “hidden”;
});
});

Clipboard 剪辑板的更多相关文章

  1. 十个Flex/Air疑难杂症及解决方案简略

    十个Flex/Air疑难杂症及解决方案简略 转自http://blog.sban.us/40.html 最近去一家台企,对方给我出了十道“难道”:在TileList中如果選擇檔過多,會出現捲軸,當拖動 ...

  2. [0412]SQL Server 2008 R2 安装 & 设置

    SQL Server 2008 R2 安装 & 设置 Sql Server 安装 安装环境: Windows 10 1709 64位 安装文件: Sql Server 2008 R2 Sql ...

  3. words2

    餐具:coffee pot 咖啡壶coffee cup 咖啡杯paper towel 纸巾napkin 餐巾table cloth 桌布tea -pot 茶壶tea set 茶具tea tray 茶盘 ...

  4. .net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境

    系列目录 单元测试及测试驱动开发简介 什么是单元测试 单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验.单元测试几乎都是用单元测试框架编写的.单 ...

  5. XDown单文件版 下载工具 支持磁力等多种链接方式下载

    原来的程序不带剪辑板探测,不支持迅雷链接等 增加功能后优化制作单文件版本. 下载类型为下图 magnet:?xt=urn:btih:836A228D932EF1C7EA1DD99D5D80B7CB0C ...

  6. fiddler选项卡-Statistc(统计)

    Statistc Statistc是fiddler用来对session列表里的Session相关情况的统计,利用这个选项,可以对请求进行性能以及其他数据分析 1.界面 2.参数详解 建议:打开fidd ...

  7. atitit.验证码识别step2------剪贴板ClipBoard copy image图像 attilax总结

    atitit.验证码识别step2------剪贴板ClipBoard copy image图像 attilax总结 剪贴板(ClipBoard)是内存中的一块区域,是Windows内置的一个非常有用 ...

  8. 2018-9-30-win10-UWP-剪贴板-Clipboard

    原文:2018-9-30-win10-UWP-剪贴板-Clipboard title author date CreateTime categories win10 UWP 剪贴板 Clipboard ...

  9. SecureCRT issue "Could not open clipboard: Assess is denied" (无法打开粘贴板:访问被拒绝)

    I got an issue when copying some line/word (actually just select the context ) in the Linux terminal ...

随机推荐

  1. Java Byte取值范围

    Java Byte 的取值范围大家都知道(-128 ~ 127),那么-128 和 127 这两个数是怎么计算的呢? #大学知识回顾: 概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ...

  2. Hadoop 一: NCDC 数据准备

    Hadoop 本文介绍Hadoop- The Definitive Guide一书中的NCDC数据准备,为后面的学习构建大数据环境; 环境 3节点 Hadoop 2.7.3 集群; java vers ...

  3. Hive导出复杂数据到csv文件

    工作中经常遇到使用Hive导出数据到文本文件供数据分析时使用.Hive导出复杂数据到csv等文本文件时,有时会遇到以下几个问题: 导出的数据只有数据没有列名. 导出的数据比较复杂时,如字符串内包含一些 ...

  4. mysql客户端(Navicat)远程登录操作遇到问题1142

    遇到此问题的原因是:用户user对数据库test 无权限操作. 解决方法:mysql> grant all privileges on test.* to user@'localhost' id ...

  5. 记住密码"功能的正确设计

    Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个关 ...

  6. jvm中的垃圾回收器

    HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器.如果两个收集器之间存在连线,就说明它们可以搭配使用.Serial(串行GC)收集器 Serial收集器 ...

  7. fiddler 监听HttpClient发送的请求

    用HttpClient模拟浏览器发送请求,设置一下代理httpClient.getHostConfiguration().setProxy("127.0.0.1", 8888);

  8. java web Servlet学习笔记-2 请求重定向和请求转发的区别

    请求转发与请求重定向的区别 请求重定向和转发 1.请求重定向:浏览器的行为(通过响应对象HttpServletResponse来执行) 特点:可以重新定向访问其他Web应用下的资源 浏览器发出了2次请 ...

  9. jquery系列教程3-DOM操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件 ...

  10. DevOps之内容分发网络CDN

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <内容分发网络CDN(Content Delivery Network)> 关于虚 ...