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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
ajax java 实现自动完成功能
Dec 19 Javascript
js中onload与onunload的使用示例
Aug 25 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
Sep 26 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
js对字符的验证方法汇总
Feb 04 Javascript
Vue2.0 事件的广播与接收(观察者模式)
Mar 14 Javascript
小程序实现搜索框
Jun 19 Javascript
VUE渲染后端返回含有script标签的html字符串示例
Oct 28 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
Nov 01 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
Jan 13 Vue.js
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
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
自己做矿石收音机
2021/03/02 无线电
国内咖啡文化
2021/03/03 咖啡文化
php下删除字符串中HTML标签的函数
2008/08/27 PHP
php 强制下载文件实现代码
2013/10/28 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
Smarty模板语法详解
2019/07/20 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
面试常见的js算法题
2017/03/23 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python操作excel的方法
2018/08/16 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
python中可以声明变量类型吗
2020/06/18 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
怎么写自荐书范文
2014/02/12 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书