js事件机制,其实是浏览器事件机制。毕竟JS是处理UI部分的语言,主要得依靠浏览器提供的能力,遵循浏览器的机制。
通过document.querySelector
获得一个页面元素,可能是个button
,或者是个form
,div
等。为他们绑定一个事件处理函数,通过obj.addEventListener
就可以为指定的时间添加处理函数。
以前写server是响应网络消息,现在呢主要是响应UI消息。如果是自己写,那就是switch就可以了,还有很多就直接上if-else的呢。但是呢,这种脚本需要符合浏览器机制,就得用addEventListener
接口来注册。类似以前什么register("xxx", onReq)
这类的函数。
浏览器的事件还分捕获阶段,和冒泡阶段,捕获阶段是从window->doc - >…->target元素。冒泡阶段是从target元素->父元素->爷元素…->doc -> window,反向的过程。一般使用冒泡阶段处理时间。据说是当时网景浏览器使用的是从上而下,而IE使用从下而上的冒泡机制,标准组织为了兼容两者,就让现代浏览器,把两种模式都支持了。
事件代理就是统一让父元素来处理事件,每个事件响应函数,会得到一个参数event
,通过event.target
就可以操作发生事件的target元素。