event 对象 小记

event对象的属性提供了有关事件的细节并且通过event对象的方法,可以控制事件的继续传播和阻止事件的默认行为

2级DOM Events 标准定义了一个标准的事件模型  被除了IE外的所有现代浏览器实现     在标准事件模型中event对象传递给事件句柄函数,在处理事件的时候获取事件发生的一些属性和控制事件的一些行为(冒泡和默认行为)   在标准事件模型中,Event的各种子接口定义了额外的属性,也就是可以定义多种种类的event对象  而IE只有一种event对象 应用于所有的事件处理

2级DOM event对象支持的方法

属性 描述
bubbles 指定事件是否起泡
cancelable 是否取消事件的默认行为
currentTarget 返回事件监听器触发该事件的元素
eventPhase 返回事件传播的当前阶段
target 事件的目标节点
timeStamp 返回事件生成的时间和日期
type 返回event表示的时间名称

区分currentTarget 和 target  在dom事件流中是结合了两种事件流的  事件捕获 和 事件冒泡

    <div>
        <button> test</button>
    </div>

比如上面的结构   对于button的click事件的响应  是这样的传播过程  先是捕获阶段   从外层的div向下传播 此时的event.Phase是1     传播到目标节点  此时的event.Phase是2

然后冒泡 在向上传递到外层的div 此时的event.phase是3    触发该事件的元素就是event.target   实际处理该事件的元素就是event.currentTaget  同样是上面的例子 对于btn的click 事件 有可能在捕获阶段子外层div上进行处理   触发事件是点击的button(event.target)  处理的是外层的div(event.currentTarget)   具体的例子 请看这篇blog

js事件小记

2级DOM event对象 支持的方法

方法  描述
iniEvent 初始化新创建的event对象属性
preventDefault 阻止事件的默认行为(event对象的cancelable属性)
stopPropagation 阻止事件的进一步传播

这里的preventDefault() 和  stopPropagation() 很好理解   主要介绍下 initEvent()方法  该方法用于初始化新事件对象的属性   新事件对象?     先跳转下

可以通过document.createEvent(eventType) 来创建新的事件对象

参数 事件接口 初始化方法
HTMLEvents HTMLEvent initEvent
MouseEvents MouseEvent initMouseEvent
UIEvents UIEvent initUIEVent

也就是我们想创建一个新的HTML事件对象  可以通过这样的方式

    var evt = document.createEvent(‘HTMLEvents‘);

我们创建了新的事件对象后就可以对事件的属性进行设置(关于UIEvents还不大了解 欢迎交流)   跳转回来

在创建了新的event事件对象后 ,调用iniEvent()方法来初始化新事件对象的属性  iniEvent(eventType,canBubble,cancelable)

参数1  事件类型  click等   参数2    是否冒泡   参数3 cancelable 是否可以通过preventDefault()取消默认的行为

在创建完新的事件对象后 就要通过element.dispatchEvent(event) 方法来分派刚才创建的合成事件(也就是在特定的元素上触发我们刚才创建的事件)

下面通过一个完整的例子来简单的说明上面的方法的使用

在页面中有这样的一个超链接

<a href="https://www.baidu.com"  id="test">baidu</a>

相应的js如下

    var btn = document.getElementById(‘test‘);
    btn.addEventListener(‘click‘,function(e){
      console.log(1);
      e.preventDefault();

    })//在超链接上监听click事件
    var evt = document.createEvent(‘HTMLEvents‘);  //创建新的事件对象
    evt.initEvent(‘click‘,false,true);  //配置新创建的事件对象   这里的设置是不冒泡  可以通过event.preventDefault()取消默认行为
    btn.dispatchEvent(evt);//在btn上分派事件   

在页面中可以看见响应了分派的click事件  并且没有进行页面的跳转

那么将initEvent()的第三个参数设置为false的时候呢

    var btn = document.getElementById(‘test‘);
    btn.addEventListener(‘click‘,function(e){
      console.log(1);
      e.preventDefault();

    })
    var evt = document.createEvent(‘HTMLEvents‘);
    evt.initEvent(‘click‘,false,false);  //这里配置成不可以通过event.preventDefault() 取消默认的行为
    btn.dispatchEvent(evt);

会发现同样响应了click事件  但是页面发生了跳转    也就是event.preventDefault()没有起作用   这种情况下调用event.preventDefault() 并不会报错 只是没作用

时间: 2024-11-07 04:56:38

event 对象 小记的相关文章

对于jq里的Event对象的方法一些理解

这些是我从jq手册的Event对象一篇里获取的理解 event.currentTarget  在事件冒泡阶段中的当前DOM元素 例子: $("p").click(function(event) { alert( event.currentTarget === this ); // true }); 概述:相当于this(DOM的) event.data 当前执行的处理器被绑定的时候,包含可选的数据传递给jQuery.fn.bind. 例子: $("a").each(

HTML DOM Event对象

我们通常把HTML DOM Event对象叫做Event事件 事件驱动模型 事件源:(触发事件的元素)事件源对象是指event对象 其封装了与事件相关的详细信息. 当事件发生时,只能在事件函数内部访问的对象 处理函数结束后会自动销毁 事件流:当页面元素触发事件的时候, 该元素的容器以及整个页面都会按照特定的顺序响应该元素的触发事件 事件传播的顺序叫做事件流. 事件分类:鼠标事件,键盘事件,表单事件,页面事件 我这里主要列举鼠标事件的: 1.鼠标事件: var btnNum = event.but

焦点 、event对象、事件冒泡、事件绑定、AJAX知识点备忘

焦点:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入. 设置焦点的几种方式: 1.点击 2.TAB键 3.JS onfocus   onblur 属性 var oinp=document.getElementById('shuru') oinp.onfocus=function(){ if(oinp.value=='请输入'){ oinp.value='' } } oinp.onblur=function(){ if(oinp.value==''){ oinp

Day28:Event对象、队列、multiprocessing模块

一.Event对象 线程的一个关键特性是每个线程都是独立运行且状态不可预测.如果程序中的其他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时线程同步问题就 会变得非常棘手.为了解决这些问题,我们需要使用threading库中的Event对象. 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生.在初始情况下,Event对象中的信号标志被设置为假.如果有线程等待一个Event对象,而这个Event对象的标志为假,那么这个线程将会被一直阻塞直至该标志为真.一个线程如果将一个E

JS-DOM:Event 对象

事件(event)由事件及事件方法组成:  (事件对象的兼容写法:window.event||event) 1.鼠标事件: mousedown.mousemove.mouseup.ondbclick.contextmenu... 2.表单事件: focus.blur.submit.change... 3.键盘事件 keydown.keyup.keypress... 4.阻止冒泡 oEvent.cancelBubble=true; 5.阻止默认事件 return false; 6.键盘方法 key

event对象

Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 事件句柄 鼠标/键盘属性 标准event属性 参考:HTML DOM Event 对象

JS中的event 对象详解

JS中的event 对象详解 JS的event对象 Event属性和方法: 1. type:事件的类型,如onlick中的click: 2. srcElement/target:事件源,就是发生事件的元素: 3. button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以3就代表左右键同时按下:(firefox中 0代表左键,1代表中间键,2代表右键) 4. clientX/clientY:事件发生的时候,鼠标相对于浏览器窗口可视文档区域的

js window.event对象解析

event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. 1.altKey    描述:    检查alt键的状态. 语法:    event.altKey 可能的值:    当alt键按下时,值为 TRUE ,否则为 FALSE .只读.2.button    描述:    检查按下的鼠标键. 语法:    event.button 可能的值:    没按键    按左键    按右键     按左右键    按中间键

Event对象——属性和方法

1.事件处理程序中返回false的效果: 事件处理程序   返回false的效果 click 单选按钮和复选按钮取消设置,对于submit按钮,表单提交被取消.对于reset按钮,表单不被重 置.对于链接,不装载链接目标 dragdrop 取消拖拽 keydown 在用户按住键不放时,取消随后的keypress事件 keypress 取消keypress事件 mousedown 取消默认行为(拖的开始.选择的开始.解除链接) mouseover 导致对window的status或defaultS