携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情
-
注册事件的兼容写法
-
自定义一个注册事件函数
-
参数:事件源、事件类型(不加on)、事件函数
-
IE9及以上的浏览器使用addEventListener方法
-
IE9以下的浏览器,使用attachEvent方法
-
判断浏览器时,不需要判断它的版本,可以检测浏览器能力
-
浏览器能力检测:将某个方法的调用作为if语句的判断条件,如果浏览器认识该方法返回true,否则返回false
-
-
解除事件绑定的方法(DOM 0级)
-
btn.onclick = function () { alert(1);}; -
btn.onclick = null; -
解除事件绑定的方法(DOM 2级)(element.addEventListener()方法)
-
element.removeEventListener()方法
-
参数:第一个参数:事件类型的字符串(直接书写:“click”,不需要加on) 第二个参数:事件函数引用名
-
注意:无法移除一个匿名函数,所以注册事件时需要单独声明一个有函数名的事件函数
-
兼容问题:不支持IE9以下的浏览器
-
-
解除事件绑定的方法(DOM 2级)(element.attachEvent()方法)
-
element.detachEvent()方法
-
参数:第一个参数:事件类型的字符串(需要加on)
第二个参数:事件函数引用名
-
注意:无法移除一个匿名函数,所以注册事件时需要单独声明一个有函数名的事件函数
-
兼容问题:只支持IE10以下的浏览器
-
-
移除事件的兼容写法
-
自定义一个移除事件函数
-
参数:事件源、事件类型(不加on)、事件函数
-
IE9及以上的浏览器,使用removeEventListener()方法
-
IE9以下的浏览器,使用detachEvent()方法
-
建议:将自己封装的一些常用函数和方法,放到一个单独的.js文件中
-
-
DOM事件流
- 在监听事件中,true为捕获顺序,false为冒泡顺序。比如下面的例子,点击最内层的蓝色,默认是以冒泡顺序,执行box3、box2、box1的监听事件。
- 在监听事件中,true为捕获顺序,false为冒泡顺序。比如下面的例子,点击最内层的蓝色,默认是以冒泡顺序,执行box3、box2、box1的监听事件。
-
事件流的三个阶段
-
第一个阶段:事件捕获
-
第二个阶段:事件执行过程
-
第三个阶段:事件冒泡(较为多用)
-
addEventListener()第三个参数为false时,事件冒泡
-
addEventListener()第三个参数为true时,事件捕获
-
onclick类型:只能进行事件冒泡过程,没有捕获阶段
-
attachEvent()方法:只能进行事件冒泡过程,没有捕获阶段
-