JavaScript事件机制

事件机制

一、事件绑定方式

<button onclick="alert('hello')" onmouseout="alert('worry')">login</button>

 btn.onclick = function (){}//使用dom0级事件,多次绑定后面的方法覆盖前面的方法

dom2级的事件绑定方式

btn.addEventListener('click',function(){
    console.log('111')
})//dom2级的事件绑定方式,可以多次绑定相同事件,不会被覆盖
btn.addEventListener('click',function(){
    console.log('222')
})
btn.addEventListener('click',f1,false)//默认为false,为true是是捕获阶段触发
btn.removeEventListener('click',f1,false)//移除事件
bth.attachEvent() //2个参数(事件,function(){})如果是IE8会识别这个时间绑定方法dom2
bth.detachEvent()//IE8中移除事件的方法dom2

二、事件的三要素(面试)

2.1事件源:

发生事件的源头

2.2事件类型

1.load:元素加载完毕后触发,适用于window或者文件加载

2.unload:当页面完全卸载后在window触发,当所有框架都卸载后在框架集上触发

3.select:当用户选择文本框( , 和)中的一个或者多个字符时

4.change:当控件的值发生更改的时候触发,控件失去焦点时触发

5.input:当控件的值发生更改是触发

6.resize:当浏览器被调整到一个新的高度或宽度时,会触发

7.scroll:当用户滚动带滚动条的元素中的内容时,在该元素上触发resize,scroll会在变化期间重复被激发,尽量保持代码简单

8.blur:元素失去焦点时触发

9.focus:元素获得焦点的时候触发,不支持冒泡//IE支持

10.focusin:与focus等价,支持冒泡

11.focusout:与blur等价支持冒泡

12.click:点击主鼠标按钮或者按下回车按键的时候触发。只有在一个元素上相继发生mousedown,mouseup事件,才会触发click事件

13.dbclick:双击主鼠标按钮时触发

14.mousedown:任意鼠标按钮按下时触发

15.mouseup:释放鼠标按钮触发

16.mousemove:鼠标在元素内部移动的时候触发

17.mousewheel:滚轮事件

18.mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发,不冒泡(不支持子元素)

19.mouseenter:鼠标光标从元素外部首次移动到元素范围内激发,不冒泡(不支持子元素)

20.mouseover:鼠标位于元素外部,将其移入另一个元素边界之内时触发(支持子元素)

21.mouseout:在位于元素上方的鼠标光标移入到另外一个元素中(支持子元素)在被选元素上与.mouseleave效果相同

22.keydown:按下键盘任意键时触发,如果按住不放重复触发此事件

23.keypress:按下键盘字符键时触发,如果按住不放会重复触发次事件

24.keyup:释放键盘上键时触发

当键盘事件发生时,event对象的keyCode属性中会包含一个代码与键盘上的特定键对应,对数字字母键,keyCode属性的值与ASCII码中对应的小写字母和数字编码相同

2.3事件驱动程序:

发生事件类型时,触发什么功能

三、事件流

描述事件发生的流程

3.1三个阶段

3.1.1事件捕获

document->html->body

3.1.2处理目标

事件处理

3.1.3事件冒泡:

body->html->document

IE 事件流被称为事件冒泡,这是因为事件被定义为从最具体的元素(文档树中最深的节点)开始触发,然后向上传播至没有那么具体的元素,有询问机制

阻止冒泡:

a3.onclick=function(e){
    e.stopPropagation()
    console.log('a3')
}

四、事件对象event

e.preventDefault():取消事件的默认行为

e.stopPropagation():阻止冒泡

a3.onclick=function(e){
    e.stopPropagation()
    console.log('a3')
}

e.bubbles:是否冒泡

a1.onclick=function(e){
    console.log(e.bubbles)//true
}

e.cancelable:是否取消事件的默认行为

a1.onclick=function(e){
    console.log(e.cancelable)//true
}

e.currentTarget:绑定事件的那个元素

a1.onclick=function(e){
    console.log(e.currentTarget)//<div id="a1">
}

e.eventPhase:事件的阶段

a1.onclick=function(e){
    console.log(e.eventPhase)//
}

e.target:实际触发事件的元素

a3.onclick=function(e){
    console.log(e.target)//a3
}

e.type:事件的类型

a3.onclick=function(e){
    console.log(e.type)//click
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值