一、事件传播方式
他们是描述事件触发时序问题的术语,绑定事件方法(事件委托:addEventListener)的第三个参数,就是控制事件触发顺序的类型。true=事件捕获,false=事件冒泡。默认false,即事件冒泡
1. 冒泡
是自下而上的去触发事件,addEventListener(,,false):第三个参数为false。
2. 捕捉
是从document到触发事件的那个节点,即自上而下的去触发事件。addEventListener(,,true):第三个参数为true。
二、注册事件方法:
1. JavaScript原生方式
2. JQuery方式
1. $('#btn').click(callback);2. $('#btn').bind('click',callback);
3. 鼠标事件
鼠标事件 事件自定义邮件菜单
4. 滚动条事件
滚动条事件
5. 键盘事件
键盘事件 您尝试敲击一下键盘
6. 自定义事件---右滑
关于自定义事件,本来还在纠结 一条原生事件从物理层鼠标到一个网页的定义过程?有些钻牛角尖!后来研究了一点安卓系统之后就满足了。
举个例子:我们现在是在一个安卓手机打开谷歌浏览器访问一个网页,点击了一个按钮,由此引发一个点击事件:
1. 物理层-手机屏幕上的传感器:感知了一个按压状态
2. Android系统(触摸)驱动:把这个按压状态定义成 一组二进制码值,并把它转译成Android Linux内核的码值(scancode)。
3. Android系统接收到scancode之后,又把它转成Android系统能识别的keycode,然后在framework层针对这个keycode写一个广播分发出去,到这里写过Android apk的同学就能理解了,他在写APK的时候可以不用Android SDK提供的事件类型,可以直接通过特定的API 获取到这个点击事件的keycode或者对应的广播消息,然后写相关的响应函数。
4. 我们Android手机上的谷歌浏览器也是一个APK。所以到这里这个点击事件就这样传到了浏览器。通过浏览器APK的再一次转义或者里边的webkit直接在Android底层获取到了点击事件的信息码值。然后它再一次转译成标准的的W3C事件“名称”。这样在最上层统一形成了W3C DOM标准之后,开发者便能统一使用了。
所以对于web开发者来说,就无需关心原生的事件如何产生了。只需要知道浏览器转义后的最后一层,W3C 的DOM事件标准即可,它对应的就是浏览器能支持的“最原生”事件了!
自定义事件不是让开发者去自定义“原生”事件,那是浏览器和webkit要做的事情(当然浏览器定义的事件也不是最“原生”事件,因为它也是接收来自系统层的事件,并转换,自定义成自己的事件)。
所以自定义事件是让开发者在W3C 标准“原生”事件的基础上进行组合逻辑,封装成更加简单的事件。《JavaScript 高级程序设计》第三版书中P13也有描述:自定义事件不是由DOM原生触发的。
7. event对象
在遵循 W3C 规范的浏览器中,event 对象通过事件处理函数的参数传入。
语法: elementObject.OnXXX=function(e){ var eve=e; // 声明一个变量来接收 event 对象 }