高级程序设计笔记–Event
event属性备注
- event.currentTarget 事件处理程序正在处理的元素,其值为this
- event.bubbles/cancelable只读属性,事件是否冒泡/是否可以取消事件的默认行为,属性值为true的时候,可以执行stopPropergation/preventDefault方法
- event.stopImmdiatePropagation可以阻止当前dom回调方法以及该dom的冒泡事件
event事件的传播过程
事件传播过程包括捕获(event.eventPhase=1)、执行(event.eventPhase=3),冒泡(event.eventPhase=3),
注:事件通过属性形式添加的形式,例如on**=function(){}
,事件发生于捕获阶段(3)。
对于IE8-,只有2和3,没有1阶段。
IE event 备注
可以通过attacheEvent添加事件,但是通过btn.onclick=function(e){}外添执行函数的方式无法通过e进行获取事件对象,var e=e||window.event
;
取消冒泡:event.cancelBubble=true;
取消默认:event.returnValue=false;
target对应:event.srcElement;
事件类型
- UI事件:用户与页面元素交互触发;eg:load/unload/abort/error/select/resize/scroll(以上也被称为html事件)
- 焦点事件:元素触发或者失去焦点触发;eg:blur/focus
- 鼠标事件: eg:click(键盘或者鼠标,由mousedown+mouseup共同组成)/dbclick/mousedown/mouseup/mousemove/mouseenter/mouseleave(不冒泡,套层元素都会触发leave,进入后代不触发leave) mouseover/mouseout(冒泡,进入子触发)
事件过程dbclick:mousedown-mouseup-click-mousedown-mouseup-click-dbclick - 滚轮事件:mouseWheel(event.wheelDelta,上正下负120)
- 文本事件:文档中输入文本时触发
- 键盘事件:keyup/keydown/keypress ev.keycode/ev.
Event 坐标
- 客户区坐标(相对于浏览器坐标):(所有浏览器都支持)ev.clientX/clientY
- 页面坐标:ev.pageX/pageY (ie8+) (ie8-采用document.body.scroll/document.documentElememt.scroll/+ev.client~来计算)
- 屏幕坐标(相当于显示器坐标):ev.screenX/screenY