码迷,mamicode.com
首页 > 其他好文 > 详细

事件监听

时间:2019-10-06 11:31:30      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:fonts   listener   code   selector   loaded   query   经历   rip   流程   

在同一个文件中,代码会预解析并且提升。

若加载多个文件时,后续的文件默认会等待上一个文件加载完并执行后,才会继续预解析并执行。

若一定要把先使用的程序文件放在后面的话,可以给它的script标签加上async属性。


 

1. 事件监听注册事件

语法:事件源.addEventListener(‘事件类型‘,事件处理程序,是否捕获);

 1 <body>
 2     <button>点击</button>
 3     <div>
 4         内容
 5     </div>
 6     <script>
 7         var btn = document.querySelector(button);
 8         var div = document.querySelector(div);
 9         btn.addEventListener(click,function(){
10             div.style.width = 300px;
11             div.style.height = 300px;
12             div.style.background = red;
13         });
14         btn.addEventListener(click,function(){
15             div.style.color = gold;
16             div.style.fontSize = 50px;
17         })
18     </script>
19 </body>

 

事件监听注册事件属于叠加事件,后一个不会覆盖前面相同的事件。

传统注册事件属于覆盖事件,事件源.事件类型 = 事件处理程序。会让后面的事件覆盖前面相同的事件。

若考虑以后的事件扩展,选择事件监听;若不需要扩展,选择传统方式。

事件监听是标准的(官方认可的),但是有兼容问题(移动端使用较多)

传统方式是非标准的,但是没有兼容问题。(PC端使用较多)

 

2. 事件监听移除事件

传统移除事件,把原来的事件重新赋值为null

1     btn.onclick = null;

 

语法:事件源.removeEventListener(‘事件类型‘,事件处理程序的名称);

 1 <body>
 2     <button>点击</button>
 3     <div>
 4         内容
 5     </div>
 6     <script>
 7         var btn = document.querySelector(button);
 8         var div = document.querySelector(div);
 9         var fn1 = function() { 
10             div.style.width = 300px;
11             div.style.height = 300px;
12             div.style.background = red;
13         };
14         var fn2 = function() { 
15             div.style.color = gold;
16             div.style.fontSize = 50px;
17         }
18         btn.addEventListener(click,fn1); //fn1不要加小括号()
19         btn.addEventListener(click,fn2);
20         // 移除fn2
21         btn.removeEventListener(click,fn2);
22     </script>
23 </body>

 

3. 事件流

事件触发后的一个流程。有三个阶段:捕获阶段、目标阶段、冒泡阶段。(先捕获,到达目标,再冒泡)

技术图片
 
 

事件监听注册的是 事件源.addEventListener(‘事件类型‘,事件处理程序,是否捕获); 中的第三个元素:

 

1)事件捕获

true为捕获,从最外层document往内捕获事件,直到捕获到目标为止。

默认为false不捕获,支持事件冒泡,从点击的目标开始,向外层冒泡直到没有为止。

不管是true还是false,冒泡阶段或捕获阶段也都会进行,但是不会展示出来。传输过程一定会经历三个阶段

 

2)事件冒泡

传统方式注册事件:默认启用事件冒泡

事件冒泡传输过程:从目标阶段(最先点击的元素)到最外层元素(即document)。

 

 

 

 

事件监听

标签:fonts   listener   code   selector   loaded   query   经历   rip   流程   

原文地址:https://www.cnblogs.com/cnlisiyiii-stu/p/11626526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!