JavaScript 事件

1、流

事件流:

流,就像水一样会扩散。事件也是同样。根据流向分为两种事件流,冒泡和捕获。

冒泡,从最具体的节点向最不具体的节点方向扩散。(IE只支持冒泡)

捕获,与冒泡相反的方向。(大部分主流浏览器支持两种)

DOM事件流:

同时支持两种事件模型:捕获型事件和冒泡型事件,但是,捕获型事件先发生。两种事件流会触及DOM中的所有对象,从document对象开始,也在document对象结束。

DOM事件模型最独特的性质是,文本节点也触发事件(在IE中不会)

1 <body id='3' onclick='alert('3')'>
2 <div id='2' onclick='alert('2')'>
3 <span id='1' onclick='alert('1')'></span>
4 </div>
5 </body>

冒泡:span - div - body  

捕获:body - div - span  

2、事件处理程序

HTML事件处理程序: 就是在标签上绑onclick的方式。不推荐,HTML和JS没有分离,代码耦合度高。

DOM 0 级事件处理程序: btn.onclick = function(){xxxxx}

DOM 2 级事件处理程序: addEventListener/removeEventListener(click,function,false/true)

参数说明,click为触发事件名,不加'on' ; function为触发的函数 ; false:冒泡 , true:捕获 ,可供自选。

IE事件处理程序: attachEvent/detachEvent(onclick,function)

IE高冷,表示自己有一套独一无二的程序。它不支持DOM2级(教程上这么说的,但我表示自家的IE11无压力,不过还是注意点好)。

上述这些可以使用能力检测的方式封装在一起(if else)。

3、事件对象

(暂列几个常见的,其余剩下遇到一个添加一个)

事件对象:在触发DOM上事件时会产生一个对象。

 

DOM事件对象 IE事件对象
event     window.event
type 获取事件类型 type
target获取事件源 srcElement
stopPropagation()阻止冒泡 cancelBubble阻止冒泡
preventDefault()阻止默认行为 returnValue阻止默认行为

4、事件类型

鼠标:onclick onmousedown onmouseup onmouseover onmouseout

键盘:onkeydown(任意键,长按会重复触发) onkeypress (字符键,长按会重复触发)onkeyup

属性:event.keyCode

 

PS :

1、不要混合使用,用啥创建的就用啥来删除。不然保不准出事!

2、补充一个格式:element.onclick === element['onclick']

3、使用DOM0级的时候,但函数有参数咋办?可以给他一个匿名函数的套子之类的。

4、this的灵活使用。表示现阶段被this搞的不要不要的。但总会过去的,给我记着!

5、函数后加括号:执行函数||将函数返回值赋值给某变量。  不加括号:把函数指针赋给某事件或变量,但没立刻执行。

6、console.log()  用来排错或者辅助,好用。

posted @ 2016-01-20 14:28  jiangz  阅读(176)  评论(0编辑  收藏  举报