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遍历td tr等html元素
Dec 13 Javascript
javascript里绝对用的上的字符分割函数总结
Jul 31 Javascript
ie8模式下click无反应点击option无反应的解决方法
Oct 11 Javascript
js网页右下角提示框实例
Oct 14 Javascript
js实现鼠标感应图片展示的方法
Feb 27 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
Cpage.js给组件绑定事件的实现代码
Aug 31 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
Apr 12 Javascript
深入浅析javascript函数中with
Oct 28 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
一步一步学习PHP(8) php 数组
2010/03/05 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
php里array_work用法实例分析
2015/07/13 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
countUp.js实现数字动态变化效果
2019/10/17 Javascript
详解Vue之计算属性
2020/06/20 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
Python import用法以及与from...import的区别
2015/05/28 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
python绘制汉诺塔
2021/03/01 Python
财务会计专业求职信范文
2013/12/31 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
心理健康课教学反思
2014/02/13 职场文书
母亲节演讲稿
2014/05/27 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
道德与公民自我评价
2015/03/09 职场文书
团拜会主持词
2015/07/04 职场文书
2016年教代会开幕词
2016/03/04 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python