首页 技术 正文
技术 2022年11月15日
0 收藏 851 点赞 4,372 浏览 794 个字

1.触发次数

零级事件只能注册一次,如果注册多次,后面的会覆盖前面的

 btn.onclick = function () {      alert(1)
}
btn.onclick = function () { alert(2)
}

二级时间可以给同一个事件注册多次,而且会依次触发

btn.addEventListener('click', function () {      alert('我被点了1')
}) btn.addEventListener('click', function () { alert('我被点了2')
})

2.现象原因

DOM0级事件绑定了DOM元素的事件函数,后面的函数会覆盖之前的

DOM2级事件通过事件监听绑定了DOM元素的事件处理函数

3.解绑方式

DOM0级事件,绑定的DOM元素.onclick = null

DOM2级事件,绑定的DOM元素.removeEventListener IE8版本之上

DOM2级事件,绑定的DOM元素.detachEvent(‘on’+事件名,回调函数)

4.原理解析

4.1DOM0

赋值了一个函数,就相当于绑定了一个方法,当我们赋值一个函数,此时浏览器会把DOM元素和赋值的的函数建立关联,以及建立DOM元素的行为监听,当某一行为被用户触发,浏览器会把赋值的函数执行;

4.2DOM2

addEventListener/attachEvent方法都是在eventTarget这个内置类的原型上定义的,我们调用的时候,首先要通过原型链找到这个方法,然后执行完成事件绑定的效果

浏览器会给当前元素的某个事件行为开辟一个事件池(事件队列)【浏览器有一个统一的事件池,每个元素绑定的行为都放在这里,通过相关标志区分】,当我们通过 addEventListener/attachEvent进行事件绑定的时候,会把绑定的方法放在事件池中;

当元素的某一行为被触发,浏览器回到对应事件池中,把当前放在事件池的所有方法按序依次执行

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,958
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,482
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,328
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,111
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,743
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,777