事件类
DOM事件类:
- DOM事件的级别
- DOM事件的模型
- DOM事件流
- DOM事件捕获的具体流程
- Event对象的常见应用
- 自定义事件
1、DOM事件的级别
主要有三个级别0,,2,3。没有1,主要是当时没有涉及到与事件相关的操作。
DOM0级,el.onclick = function(){};DOM2级和DOM3级差不多,都是使用的是el.addEventListener()来监听,DOM2是el.addEventListener(onclick,function(){},false),DOM3是el.addEventListener('keyup',function(){},false)。这里的第三个参数是事件模型的捕获和冒泡判定,true为捕获,false为冒泡。而这连个主要区别在于第一个参数上,DOM2第一个参数主要是onclick、onmouserover、onmousemove、onmouseout等;DOM3主要就是鼠标事件、键盘事件等。
2、事件模型和事件流
事件模型就是事件捕获和事件冒泡两个了。捕获就是从上往下触发,冒泡是事件从下往上触发。而事件流就是对模型的具体化,也就一个操作的具体过程。就如点击鼠标触发,它是如何传到页面的,这一个完整的过程就可以说是事件流。完整的事件事件流主要有三个阶段,第一个阶段是捕获阶段,当到达目标后就是第二个阶段即目标阶段,第三个阶段就是目标阶段(目标元素)返回到浏览器执行(windon)也就是冒泡阶段。

3、DOM事件捕获的具体流程
DOM事件捕获的具体流程是从浏览器往下触发到最后的目标元素。浏览器即window对象。
执行顺序:window——>document——>document.documentElement(html)——>body——>元素结构(从上到下)——>最后目标元素。
4、Event对象的常见应用
阻止事件的默认行为event.preventDefault(),阻止时间冒泡event.stopPropagation(),event.stopImmediatePropagation() 这个方法比较特别,它可以阻止绑定在同一个元素上的两个都执行事件,这么来说,一般在一个元素元素上绑定两个事件,那么这两个事件都会被执行,而想要它们只执行一个事件就需要用到event.stopImmediatePropagation() 这个方法来阻止了。还有两个是event.currentTarget和event.target,第一个是指当前元素所绑定的事件,而第二个是指当前的元素。
5、自定义事件
事件有很多种,如click,onmouserover、onmousemove等等,这些都是js本身存在的。自定义事件的话需要用到事件对象Event(),如:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>自定义事件</title> <style> *{margin:0;padding:0} .el{ width:100px; height:100px; line-height:100px; background-color: red; text-align: center; } </style> </head> <body> <div class="el"> 自定义事件 </div> <script> const el = document.querySelector('.el') // 自定义事件 const custom_e = new Event('test') el.addEventListener('test', function(){ console.log('456') }) el.addEventListener('click', function(){ // 点击执行自定义事件 el.dispatchEvent(custom_e) }) </script> </body> </html>

浙公网安备 33010602011771号