事件监听

Posted cnlisiyiii-stu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件监听相关的知识,希望对你有一定的参考价值。

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

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

若一定要把先使用的程序文件放在后面的话,可以给它的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)。

 

 

 

 

以上是关于事件监听的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX实战:几种事件监听实现,键盘按键事件监听,鼠标滚轮事件监听,鼠标按键事件监听,鼠标移动事件监听

JavaFX实战:几种事件监听实现,键盘按键事件监听,鼠标滚轮事件监听,鼠标按键事件监听,鼠标移动事件监听

Spring事件监听机制源码解析

Android 键盘事件触发以及监听

vue 监听函数发生事件

Spring事件监听机制