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 相关文章推荐
用Javascript实现UTF8编码转换成gb2312编码
Dec 22 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
javascript每日必学之循环
Feb 19 Javascript
jQuery隐藏和显示效果实现
Apr 06 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
Apr 29 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
JavaScript对JSON数据进行排序和搜索
Jul 24 Javascript
解决vuex刷新状态初始化的方法实现
Aug 15 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 Javascript
JS实现旋转木马轮播图
Jan 01 Javascript
JS实现放烟花效果
Mar 10 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 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
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
python错误处理详解
2014/09/28 Python
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
Python tornado上传文件的功能
2020/03/26 Python
市场营销专业推荐信
2013/11/03 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
领导干部保密承诺书
2014/08/30 职场文书
入股协议书范本
2014/11/01 职场文书
先进事迹材料范文
2014/12/29 职场文书
2015年酒店工作总结
2015/04/28 职场文书
解除处分决定书
2015/06/25 职场文书
中学语文教学反思
2016/02/16 职场文书