事件对象——DOM中的事件对象

触发DOM上的交互事件会生成一个event对象,用以保存事件的信息。比如鼠标交互的事件会保存鼠标的位置,键盘交互的事件会保存键的值。

1.DOM0级和DOM2级事件处理程序在进行事件处理时都会有一个event对象传入。例如event.type会保存事件类型名称。

2.HTML事件处理程序中的变量event保存有event对象。

3.event对象的属性和方法:

  1.bubbles。布尔值,用以表明事件是否冒泡。

  2.cancelable。布尔值,用以表明是否可以取消事件的默认行为。通常和preventDefault()配合使用。

  3.defaultPrevented。布尔值,值为true表明已经调用了preventDefault()。(DOM3新增)

  4.trusted。布尔值,值为true表明事件是浏览器生成的,false表明是开发者通过js创建的。(DOM3新增)

  5.currentTarget。Element,事件处理程序当前正在处理事件的那个元素,也就是说事件处理程序被添加的那个元素,即事件处理处理程序的this值的指向。

  6.target。Element,事件的目标。

  7.detail。与事件相关的细节信息。

  8.eventPhase。调用事件处理程序的阶段。1表示捕获阶段,2表示处于目标阶段,3表示冒泡阶段。

  9.preventDefault()。取消事件的默认行为,前提要求是cancelable值为true。

  10.stopPropagation()。取消事件的进一步捕获或冒泡。前提要求bubbles值为true。

  11.stopImmediatePropagation()。取消事件进一步冒泡,并阻止任何事件处理程序调用。(DOM3新增)。

  12.type。事件类型。

4.event对象的target、currentTarget和元素的this关系。

  event.currentTarget永远指的是事件处理程序执行环境所在作用域,即事件处理程序被添加到的那个元素。如果事件处理程序添加到目标元素,那么event.currentTarget与event.target与this彼此是全等关系。

  如果事件处理程序没有被添加到目标元素上,比如被添加到body元素上,那么event.currentTarget与this是全等关系,它们都指向body元素,而event.target指向的是目标元素。

5.通过一个函数来处理多个事件

(在事件处理程序中利用switch判断event.type类型,对不同的事件类型赋予不同的处理方式,然后通过对目标元素添加DOM0级事件处理程序)

var btn=document,getElementById("btn");
var handler=(event)=>{
    switch(event.type){
        case "clcik":
            alert("clicked");
            break;
        case "mouseover":
            event.target.style.backgroundColor="red";
            break;
        case "mouseout":
            event.target.style.backgroundColor="";
            break;
    }
};
btn.onclick=handler;
btn.mouseover=handler;
btn.mouseout=handler;

6.阻止特定事件的默认行为

var link=document.getElementById("a");
link.onclick=(event)=>{  event.cancelable=true;
    event.preventDefault();
};

7.当目标元素的父元素上有事件处理程序时,通过event.stopPropagation()阻止目标元素事件冒泡。

var btn=document.getElementById("btn");
btn.onclick=(event)=>{
    //some code
    event.stopPropagation();
};//阻止事件冒泡,但处于目标阶段时仍会进行事件处理
document.body.onclick=(event)=>{
    //some code
};
//body上的事件处理程序不会被调用。

8.使用event.eventPhase属性查询事件流处于哪个阶段

btn.onclick=(event)=>{
    alert(event.eventPhase);//2,dom0级在处于目标阶段处理事件
};

btn.addEventListener("click",(event)=>{
   alert(event.eventPhase);//1
},true);

btn.addEventListener("click",(event)=>{
       alert(event.eventPhase);//3
},false);

document.body.onclick=(event)=>{
  alert(event.eventPhase);//3
}

原文地址:https://www.cnblogs.com/Syinho/p/12248452.html

时间: 2024-10-07 05:25:57

事件对象——DOM中的事件对象的相关文章

js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象

事件对象    在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对象中,会包含鼠标位置的信息,而键盘操作导致的事件对象中,会包含与按下的键有关的信息.所有浏览器对象都支持event对象,但支持方式不同. DOM中的事件对象 兼容DOM的浏览器会将一个event对象传入到事件处理程序中.无论指定事件处理程序时使用什么方法(DOM0级或DOM2级),都会传入event

事件对象——IE中的事件对象

总结: 1.IE浏览器中有三种事件处理程序:HTML事件处理程序,DOM0级事件处理程序,IE事件处理程序. 2.IE浏览器中的HTML事件处理程序调用事件对象:直接调用event变量: onclick=“alert(event.type);” 3.IE浏览器中的DOM0级事件处理程序通过调用window.event得到事件对象: btn.onclick=()=>{ var event=window.event; } 4.IE浏览器中的IE事件处理程序通过传入事件参数得到事件对象: btn.at

DOM中的事件委托

1. 事件委托定义 事件委托指的是不在事件的发生地(直接DOM)上设置监听函数,而是在其父元素上设置监听函数,通过事件冒泡,父元素可以监听到被触发的子元素事件,通过判断事件发生元素DOM的类型,来作出不同的响应.当子元素有很多时,使用事件委托可以避免对特定的每个节点添加事件监听器,事件监听被添加到它们的父元素上,事件监听函数这是可以从子元素上冒泡上来的事件,找到是哪个子元素事件. 2. 事件委托举例 最经典的就是ul和li标签的事件监听,比如我们在添加事件时候,采用事件委托机制,不会在li标签上

动态添加dom中的事件绑定

在添加dom时,会同时添加按钮,或者事件.在动态添加的时候,应该用 $(document).on('event','selector',function(){.......}) 例如:

JavaScript中的事件对象

JavaScript中的事件对象 JavaScript中的事件对象是非常重要的,恐怕是我们在项目中使用的最多的了.在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有关的信息.下面将会讲到DOM中的事件对象.IE中的事件对象以及跨浏览器的事件对象三个部分. 对于事件处理程序,大家可以看我的博文<JavaScript中的五种事件处理程序>. 第一部分:DOM事件对象 兼容DOM的浏览器会将一个event对象传入到事件处理程序中,无论是HMTL特性.DOM0级还是

跨浏览器的事件对象-------EventUtil 中的方法及用法

什么是EventUti----封装好的事件对象 在JavaScript中,DOM0级.DOM2级与旧版本IE(8-)为对象添加事件的方法不同 为了以跨浏览器的方式处理事件,需要编写一段“通用代码”,即跨浏览器的事件处理程序 习惯上,这个方法属于一个名为EventUtil的对象 编写并使用该对象后,可保证处理事件的代码能在大多数浏览器下一致的运行 var EventUtil={ addHandler:function(element,type,handler){ //添加事件 if(element

IE中的事件对象

1)type属性 用于获取事件类型 2)srcElement属性 用于获取事件的目标 3)cancelBubble属性 用于阻止事件冒泡 设置为true表示阻止事件冒泡  设置为false表示不阻止冒泡 4)returnValue属性 用于阻止事件的默认行为 设置为false表示阻止事件的默认行为 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh

javascript事件学习(3)-Event对象

3.事件对象 在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包含导致事件的元素.事件的类型以及其他与特定事件相关的信息.所有的浏览器都支持event对象,但支持的方式不同. event对象本身就是一个构造函数,可以用来生成新的实例. event = new Event(typeArg, eventInit); Event构造函数接受两个参数.第一个参数是字符串,表示事件名称,第二个参数是一个对象,表示事件对象的配置. var ev = new E

javascript中的事件冒泡、事件捕获和事件执行顺序

谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的应用有着相当大的影响.这两种事件流分别是捕获和冒泡.和许多Web技术一样,在它们成为标准之前,Netscape和微软各自不同地实现了它们.Netscape选择实现了捕获事件流,微软则实现了冒泡事件流.幸运的是,W3C决定组合使用这两种方法,并且大多数新浏览器都遵循这两种事件流方式. 1事件传播--冒泡与捕