事件监听、事件模型

事件监听

事件监听就是让计算机等待某个事件的发生,当这个事件发生之后,对其做出一个相应,如等待鼠标单击按钮,单击发生时打开一个新的页面;但是你写的监听事件发现这件事情后,会进行阻止,让其无法跳转。

事件监听涉及到三个类对象

1、EventSource(事件源)事件发生的场所

2、Event(事件):事件封装界面组件上面发生的特定事件

3、EventListener(事件监听器):负责监听事件源发生的事件

事件监听用法

1、当同一个对象使用.onclick的写法触发多个方法的时候,后一个方法会把前一个方法覆盖掉,也就是说,在对象的onclick事件发生时,只会执行最后绑定的方法。而用事件监听则不会有覆盖的现象,每个绑定的事件都会被执行。

window.onload = function(){
    
     
 var btn = document.getElementById("yuanEvent"); 
 btn.onclick = function(){
    
     
  alert("第一个事件"); 
 } 
 btn.onclick = function(){
    
     
  alert("第二个事件"); 
 } 
 btn.onclick = function(){
    
     
  alert("第三个事件"); 
 } 
}

2、采用事件监听给对象绑定方法后,可以解除相应的绑定。

var eventOne = function(){
    
     
 alert("第一个监听事件"); 
} 
function eventTwo(){
    
     
 alert("第二个监听事件"); 
} 
window.onload = function(){
    
     
 var btn = document.getElementById("yuanEvent"); 
 btn.addEventListener("click",eventOne); 
 btn.addEventListener("click",eventTwo); 
 btn.removeEventListener("click",eventOne); 
}

3、解除绑定事件的时候一定要用函数的句柄,把整个函数写上是无法解除绑定的。

btn.addEventListener("click",eventTwo); 
btn.removeEventListener("click",eventOne); 

事件模型

javascript中有两种事件模型:DOM0,DOM2。
DOM0级事件模型是早期的事件模型,所有的浏览器都是支持的,而且其实现也是比较简单。

<p id = 'click'>click me</p>
<script>
    document.getElementById('click').onclick = function(event){
    
    
        alert(event.target);
    }
</script>

这种事件模型就是直接在dom对象上注册事件名称,这段代码就是在p标签上注册了一个onclick事件,在这个事件函数内部输出点击的目标。而解除事件则更加简单,就是将null复制给事件函数,如下:

document.getElementById('click'_).onclick = null;

由此我们可以知道dom0中,一个dom对象只能注册一个同类型的函数,因为注册多个同类型的函数的话,就会发生覆盖,之前注册的函数就会无效。
DOM2级事件模型是捕获和冒泡模型,就是一个事件, 要先捕获到, 然后在执行冒泡
DOM2级的注册事件和解除事件
在DOM2级中使用addEventListener和removeEventListener来注册和解除事件。这种函数较之之前的方法好处是一个dom对象可以注册多个相同类型的事件,不会发生事件的覆盖,会依次的执行各个事件函数。

猜你喜欢

转载自blog.csdn.net/zxlong020/article/details/108567209