angular div 滚动条事件_DOM事件
事件是在编程时系统内发生的动作或发生的事情(单击、鼠标移动、滚动页面等)。HTML DOM 使 JavaScript 有能力对 HTML 事件做出反应。JS与HTML之间的交互是通过事件实现的,DOM支持大量的事件。事件的本质是程序各个组成部分之间的一种通信方式,也是异步编程的一种实现。
DOM事件模型分三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段
代码举例:
<div class= “爷爷”><div class= “爸爸”><div class= “儿子”></div></div>
</div>
即 .爷爷>.爸爸>.儿子,分别添加事件监听 fnYe / fnBa / fnEr
提问1: 点击了谁?
点击文字, 算不算点击儿子;点击文字, 算不算点击爸爸;点击文字, 算不算点击爷爷
答: 都算
提问2: 调用顺序? 点击文字最先调用fnYe/fnBa/fnEr中的哪一个函数?
IE5调用顺序为fnEr->fnBa->fnYe, 网景调用顺序为fnYe->fnBa->fnEr
最后W3C制定标准
- 文件名为DOM Level 2 Events Specification
- 规定浏览器同时支持两种调用顺序
- 首先按爷爷=>爸爸=>儿子顺序看有没有函数监听
- 然后按儿子=>爸爸=>爷爷顺序看有没有函数监听
因此:从外向内找监听函数,叫事件捕获
从内向外找监听函数,叫事件冒泡
DOM事件模型示意图
addEventListener
事件绑定API
- IE5: baba.attachEvent('onclick', fn)//事件冒泡
- 网景: baba.addEventListener('click', fn)//事件捕获
- W3C: baba.addEventListener('click', fn, bool),
如果bool不传或为falsy, 则fn使用事件冒泡, 即当浏览器在冒泡阶段发现baba有监听函数,就会调用fn并提供事件信息;反之如果bool为true就让fn走捕获,即当浏览器在捕获阶段发现baba有fn监听函数,就会调用fn,并提供事件信息。
JS Binjs.jirengu.com
target和currentTarget
e.target 是用户操作的元素
e.currentTarget是程序员监听的元素
例如:div>span{文字},用户点击文字,e.target就是span,e.currentTarget是div
特例:如果监听的元素就是用户点击的元素,那么谁先监听就谁先执行
只有一个div被监听(不考 虑父子同时被监听),fn分别在捕获阶段和冒泡阶段监听click事件
用户点击的元素就是开发者监听的
div.addEventLisenter('click', f1)
div.addEventLisenter('click', f2, true)
请问,f1 先执行还是f2先执行?如果把两行调换位置后,请问哪个先执行?
正确答案:谁先监听谁先执行
取消冒泡
捕获不可取消,但冒泡可以
e.stopPropagation()可中断冒泡,浏览器不再向上走,一般用于封装独立组件
不可取消冒泡:有些事件不可取消冒泡
例如:MDN搜索scroll event,看到Bubbles和Cancelable,Bubbles的意思是该事件是否冒泡
Cancelable的意思是开发者是否可以取消冒泡
如何阻止滚动?
滚动条是出现在document上面的
- 阻止scroll默认动作没用,因为先有滚动才有滚动事件
- 要阻止滚动,可阻止wheel和touchstart的默认动作
- 注意你需要找准滚动条所在的元素
- 但是滚动条还能用,可用CSS让滚动条width: 0
CSS也行
- 使用overflow: hidden可以直接取消滚动条
- 但此时JS依然可以修改scrollTop
自定义事件
浏览器自带事件有100多种
事件参考developer.mozilla.org
如何自定义一个事件
事件委托
就是委托一个元素帮助监听本该监听的元素
场景一:
你要给100个按钮添加点击事件,咋办?
答:监听这100个按钮的祖先,等冒泡的时候判断target是不是这100个按钮中的一个
JS Binjs.jirengu.com
场景二
你要监听目前不存在的元素的点击事件,咋办?
答:监听祖先,等点击的时候看看是不是我想要监听的元素即可
优点
- 省监听数(内存)
- 可以监听动态元素
封装事件委托
JS支持事件吗
答:支持,也不支持。DOM事件不属于JS的功能,术语浏览器提供的DOM的功能
JS只是调用了DOM提供的addEventListener而已
angular div 滚动条事件_DOM事件相关推荐
- angular div 滚动条事件_angular怎么控制滚动条
angular中可通过ion-content指令来控制滚动条,ionContent指令提供一个易用的内容区域,该区域可以用Ionic的自定义滚动视图进行配置,或浏览器内置的溢出滚动. 内容组件提供了一 ...
- a标签点击事件_DOM事件机制
前言 本文主要介绍DOM事件级别.DOM事件模型.事件流.事件代理和Event对象常见的应用,希望对你们有些帮助和启发! 一.DOM事件级别 DOM级别一共可以分为四个级别:DOM0级.DOM1级.D ...
- vue 监听某div滚动条的滚动事件
监听此div , 定义ref <div class="productSec" ref="rightContent" @mousewheel="s ...
- vue 移动端监听div滚动条的滚动事件
第一步:监听div,定义ref <div class="accpdfbox" ref="rightContent" @scroll="scroo ...
- JavaScript基础13-day15【DOM增删改、DOM添加删除记录、操作内联样式、获取元素的样式、DOM Element 对象、滚动条练习、事件对象、div跟随鼠标移动、事件冒泡】
学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...
- html页面滚动条监听事件,滚动条的scroll事件
在vb中,滚动条的scroll 事件和change 事件的区别scroll和change的区别为:指代不同.用法不同.侧重点不同 一.指代不同 scroll:滚屏,滚动. change:变更,变革. ...
- angular 点击特定区域外事件
angular 点击特定区域外事件 模板 <div #unclick>这里不出发事件, 点击其他区域出发事件</Div> 或者 <div class="uncl ...
- Jquery为DIV添加点击事件,Jquery为a标签超链接添加点击事件
Js代码 <div>1</div> <div>2</div> <div>3</div> <div>4</d ...
- 子节点含有表单元素的div元素的blur事件
1.div元素的blur事件 blur事件一般在表单元素如input元素才是存在的,对div.span等元素时无效的,但是可以给div元素加上tabindex属性,也可以让div等元素有焦点,所以bl ...
最新文章
- php中的eq的含义,jquery,_jQuery中的eq(0)到底是什么意思??详情请看下面代码!,jquery - phpStudy...
- CF293B Distinct Paths题解
- python求n的阶乘_python求n的阶乘
- HIS系统两种收费模式比较:前计费和后计费
- 一款基于Netty开发的WebSocket服务器
- Spring Cloud Spring Boot mybatis分布式微服务云架构(一)快速入门
- java excel函数_JAVA实现EXCEL公式专题(四)——字符串函数
- 阿里推出“阿里云网盘”App;Linux 发布 29 周年​| 极客头条
- 如何让C/S应用支持多端(PC、Android、iOS)同时登录?
- java.util.stream.IntStream
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_5、SpringBoot2.x的依赖默认Maven版本...
- Recommended System
- kdj买卖指标公式源码_KDJ买卖副图指标 源码 通达信 贴图
- PHP制作面包屑,thinkPHP制作面包屑方法
- 智能电饭煲自动洗米手机操控一键搞定
- 【附章4包装类】包装类的顶级理解
- 【学术方法 | 文献阅读】How to Read Papers
- html编辑器的值+dede,dedecms升级ckeditor为ueditor编辑器,详细修改方法和步骤
- 软件测试之bug管理
- 系统校验矩阵怎么求_软考高级架构师:计算机系统基础知识
热门文章
- 和preload_通过LD_PRELOAD绕过disable_functions
- simpledateformat格式_如何使用SimpleDateFormat?
- R语言基础入门(3)之数据类型与相应运算1
- android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线
- oracle tb级别数据量,备份TB级别Oracle数据库的一些技巧
- 使用pm2启动node文件_PM2 是什么
- pythonjavascript一起开发_Python开发【第十一篇】:JavaScript
- .net fileupload批量上传可删除_【JavaWeb基础】文件上传和下载(修订版)
- 电脑打开微信小程序_终于可以在电脑上玩转微信小程序啦
- 抓包工具mitmproxy | mitmweb基本用法(二)