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

×

目录

[1]定义 [2]对象方法 [3]应用

前面的话

  剪贴板操作可能看起来不起眼,但是却十分有用,可以增强用户体验,方便用户操作。本文将详细介绍剪贴板事件

定义

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

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

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

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

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

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

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

<input value="text" id="test">
<script>
test.onpaste= test.oncopy = test.oncut = function(e){
    e = e || event;
    test.value = e.type;
    return false;
}
</script>

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

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

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

<input value="text" id="test">
<script>
test.onbeforepaste= test.onbeforecopy = test.onbeforecut = function(e){
    e = e || event;
    test.value = e.type;
    return false;
}
</script>

对象方法

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

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

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

getData()

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

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

<input id="test" value="123">
<script>
test.onpaste=function(e){
    e = e || event;
    var clipboardData = e.clipboardData || window.clipboardData;
    test.value = ‘测试‘ + clipboardData.getData(‘text‘);
    return false;
}
</script>

setData()

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

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

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

<input id="test" value="123">
<script>
test.oncopy=function(e){
    e = e || event;
    var clipboardData = e.clipboardData || window.clipboardData;
    clipboardData.setData(‘text‘,‘测试‘);
    test.value = clipboardData.getData(‘text‘);
    return false;
}
</script>

clearData()

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

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

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

<input id="test" value="123">
<script>
test.oncopy=function(e){
    e = e || event;
    var clipboardData = e.clipboardData || window.clipboardData;
    test.value = clipboardData.clearData(‘text‘);
    return false;
}
</script>

应用

【1】屏蔽剪贴板

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

<input value="text">
<button id="test">屏蔽剪贴板</button>
<script>
test.onclick = function(){
    document.oncopy=document.oncut = document.onpaste = function(e){
        e = e || event;
        alert(‘该文档不允许复制剪贴操作,谢谢配合‘)
        return false;
    }
}
</script>

【2】过滤字符

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

<input id="test">
<script>
test.onpaste = function(e){
    e = e || event;
    var clipboardData = e.clipboardData || window.clipboardData;
    if(!/^\d+$/.test(clipboardData.getData(‘text‘)))
        return false;
    }
}
</script>    
时间: 2024-08-24 18:47:57

深入理解DOM事件类型系列第四篇——剪贴板事件的相关文章

深入理解DOM事件类型系列第三篇——变动事件

× 目录 [1]删除节点 [2]插入节点 [3]特性节点[4]文本节点 前面的话 变动(mutation)事件能在DOM中的某一部分发生变化时给出提示,这类事件非常有用,但都只能使用DOM2级事件处理程序,且由于浏览器兼容性不好,所以用的不广泛 删除节点 删除节点时,涉及到DOMNodeRemoved事件.DOMNodeRemovedFromDocument事件和DOMSubtreeModified事件这三个事件,下面将详细介绍 DOMNodeRemoved 在使用removeChild()或r

深入理解DOM事件类型系列第五篇——文本事件

× 目录 [1]change [2]textInput [3]input[4]propertychange[5]兼容 前面的话 如果DOM结构发生变化,触发的是变动事件:如果文本框中的文本发生变化,触发的是文本事件 HTML5为input控件新增了很多type属性,大大增加了input控件的应用场景.其中一个是type="range"的input控件,可以通过拖动游标改变value值,但并不是所有浏览器都可以实时显示,除了IE10+浏览器 <input type="ra

深入理解脚本化CSS系列第四篇——脚本化样式表

× 目录 [1]CSSStyleSheet [2]CSSRule 前面的话 关于脚本化CSS,查询样式时,查询的是计算样式:设置单个样式时,设置的是行间样式:设置多个样式时,设置的是CSS类名.脚本化样式表当然也是一种脚本化CSS的技术,虽然不经常使用,但有时却非常有用.下面将详细介绍脚本化样式表的内容 CSSStyleSheet CSSStyleSheet类型表示的是样式表.我们知道,引入CSS一共有3种方式,包括行间样式.内部样式和外部样式.其中,内部样式和外部样式分别通过<style>和

深入理解表单脚本系列第四篇——选择框脚本

× 目录 [1]select [2]option [3]添加选项[4]移除选项 前面的话 选择框是通过<select>和<option>元素创建的,又称为下拉列表框.为了方便与这个控件交互,除了所有表单字段共有的属性和方法外,javascript还提供了一些属性和方法.本文将详细介绍选择框脚本 <select> 首先介绍关于<select>元素的相关属性 multiple multiple属性表示是否允许多项选择 <select name="

深入理解javascript作用域系列第四篇——块作用域

× 目录 [1]let [2]const [3]try 前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用其他类型的作用域单元甚至可以实现维护起来更加优秀.简洁的代码,比如块作用域.随着ES6的推广,块作用域也将用得越来越广泛.本文是深入理解javascript作用域系列第四篇——块作用域 let for (var i= 0; i<10; i++) { console.log(i); } 上面这段是很熟

深入理解DOM事件机制系列第三篇——事件对象

× 目录 [1]获取 [2]事件类型 [3]事件目标[4]事件代理[5]事件冒泡[6]事件流[7]默认行为 前面的话 在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.所有浏览器都支持event对象,但支持方式不同.本文将详细介绍事件对象 获取事件对象 [1]一般地,event对象是事件程序的第一个参数 [注意]IE8-浏览器不支持 //IE8-浏览器输出undefined,其他浏览器则输出事件对象[object MouseEvent] <div i

深入理解DOM节点类型第一篇——12种DOM节点类型概述

前面的话 DOM是javascript操作网页的接口,全称为文档对象模型(Document Object Model).它的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组成一个树状结构.DOM的最小组成单位叫做节点(node),文档的树形结构(DOM树)由12种类型的节点组成.本文将主要说明DOM节点类型 总括 一般地,节点至少拥有nodeType.node

事件的分发机制(View篇因此事件传递的顺序是先经过onTouch,再传递到onClick)

参考声明:感谢郭霖http://blog.csdn.net/guolin_blog/article/details/9097463和张鸿洋http://blog.csdn.net/lmj623565791/article/details/38960443 以一个简单的activity为例,该activity中只有一个button,如果我们为该按钮添加监听,只需要这样: 1 button.setOnClickListener(new OnClickListener() { 2 @Override

深入理解DOM节点类型第四篇——文档片段节点DocumentFragment

× 目录 [1]特征 [2]作用 前面的话 在所有节点类型中,只有文档片段节点DocumentFragment在文档中没有对应的标记.DOM规定文档片段(document fragment)是一种“轻量级”的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源 特征 创建文档片段,要使用document.createDocumentFragment()方法.文档片段继承了Node的所有方法,通常用于执行那些针对文档的DOM操作 文档片段节点的三个node属性——nodeType.nod