HTML中setCapture、releaseCapture 使用方法浅析


Posted in Javascript onSeptember 25, 2016

1. setCapture 简介

setCapture可以将鼠标事件锁定在指定的元素上,当元素捕获了鼠标事件后,该事件只能作用在当前元素上。

以下情况会导致事件锁定失败:

  • 当窗口失去焦点时,锁定的事件,自动就会取消。
  • alert也会导致事件的锁定取消。解决办法是在alert之后再次锁定。
  • 鼠标右键也会导致事件解锁。

setCapture只可以作用于以下事件:

  • onclick
  • ondblclick
  • onmousedown
  • onmouseup
  • onmouseover
  • onmouseout

 setCapture不可作用于键盘等其它事件,只能作用于鼠标事件。主要用于: onmouseover  与  onmouseout 事件。

* setCapture该法是IE浏览器专有。

2. setCapture 使用格式

setCapture 有一个布尔值参数,用于设置是否捕获其子元素的鼠标事件。

  • 当参数是ture时 ,当前元素会捕获其内的所有子元素的鼠标事件,即指定元素内的子元素不会触发鼠标事件,也就是当前元素内的子元素与当前元素外的元素一致。

  • 当参数为false时,当前元素不会捕获该其内的所有子元素的鼠标事件。容器内的对象能够正常地触发事件和取消冒泡。

示例: currElement.setCapture(boolean)

3. setCapture - Simple - Demo

<script>
 var oBox = document.getElementById('infor'),
  oBtn = document.getElementsByTagName('button')[0];

 oBtn.onmousedown=function(){
  this.setCapture(true);
 }
 oBtn.onmouseover = function(){
 oBox.innerHTML+='onmouseover | ';
 }
 oBtn.onmouseout = function(){
 oBox.innerHTML+='onmouseout | ';
 }
 oBtn.onmouseup = function(){
 oBox.innerHTML+='onmouseup | ';
 }

</script>

4. setCapture 总结

setCapture()用于事件的锁定,对应的还有一个解锁事件方法 releaseCapture()方法,releaseCapture()可以为指定的元素解除事件锁定。它们俩必须成对使用。

setCapture()方法主要用于高级的拖动技术,这是因为在IE下,当我们在要拖动的元素上,在按下鼠标按钮然后拖动时,当拖动过快,或者是超出浏览器的文档窗口时,拖动对象身上的onmousedown就会失效。在Chrome我们可以为doucment绑定onmouseout来判断是否发生这样的情况,但是IE下面却行不通,所以最好的解决办法就时为要拖动的元素对象锁定鼠标事件,在拖动后在解除事件锁定。

具体使用案例:https://3water.com/article/93446.htm

另外在Firefox中有相似的功能,它们分别是:

· captureEvents(Event.eventType)
· releaseEvents(Event.eventType)

最后在学习的过程中我对setCapture还存在的几个疑问,希望以后能得到高手的指点:

1. 为什么为button元素锁定事件后,没有在button元素上移动,但是还会触发onmouseover与onmouseout事件。

[ 具体代码见上面的DEMO ]

2.在onclick事件中,没法永久将鼠标事件锁定在指定元素上。

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="UTF-8">
 <title>setCapture - Simple - Demo</title>
 </head>
 <body>
  <button>click</button>
 </body>
</html>
 <script>
 var oBtn = document.getElementsByTagName('button')[0];
 oBtn.onclick=function(){
  this.setCapture();
 }
 </script>

然后第二次点击页面后就会发现锁定自动取消。

Javascript 相关文章推荐
js调用activeX获取u盘序列号的代码
Nov 21 Javascript
jQuery中setTimeout的几种使用方法小结
Apr 07 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
Mar 16 Javascript
CSS图片响应式 垂直水平居中
Aug 14 Javascript
论Bootstrap3和Foundation5网格系统的异同
May 16 Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
Mar 02 Javascript
web前端vue之CSS过渡效果示例
Jan 10 Javascript
vue+element实现批量删除功能的示例
Feb 28 Javascript
React Component存在的几种形式详解
Nov 06 Javascript
VUE脚手架的下载和配置步骤详解
Apr 01 Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 Javascript
jQuery的deferred对象使用详解
Sep 25 #Javascript
简单谈谈Vue 模板各类数据绑定
Sep 25 #Javascript
D3.js实现直方图的方法详解
Sep 25 #Javascript
关于JS中二维数组的声明方法
Sep 24 #Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
Sep 24 #Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 #Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 #Javascript
You might like
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
python 上下文管理器使用方法小结
2017/10/10 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
django列表筛选功能的实现代码
2020/03/27 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
致200米运动员广播稿
2014/02/06 职场文书
公司承诺书范文
2014/05/19 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
销售人才自我评价范文
2014/09/27 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书