正如javascript由草根到招安,dom事件也经历了诞生,混战到规范的三个阶段
模型简介
- 传统模型
客户端js程序采用异步事件驱动编程模型,事件监听是这个模型最基本的要求,而且感觉也就实现了个监听...
- ie模型
传统模型只提供了监听功能,随着js的发展,对事件的需求也越来越多,浏览器产品经理互相摘抄各种理念比如多投,传播...而且被广大程序猿所接受
ie模型是里面的代表,也算是少数(我都想说唯一)还存在的模型
- dom模型
模型是软件开发的基础,混乱的模型不存在任何用户体验,有爱的w3c诚邀各类厂家,视图建立统一的接口实现
- jquery模型
按理说事情就简单了,使用最新模型总不会错,但是.....
客户老爷的重口味爱好(ie捆绑战术+盗版国情),使得神奇的落后浏览器依然存活着,而更令人恼怒的是各大产品经理对dom模型的不同理解(文档不全害死人),这时我们需要一套兼容模型
jqury事件模型经过不断地借鉴(抄袭),设计完善,成为了非常经典的事件模型(我是jquery党)
模型规范
- 传统模型
传统模型只实现了监听功能,当然他有2种方式,html属性方式和脚本化方式因为全都以on开头,可以成为onXX系列
html属性方式
<div onclick="console.log(arguments.callee)">点我点我</div>
脚本化方式(js方式)
document.getElementsByTagName("div")[0].οnclick=function(){ console.log(arguments.callee,"by onclick"); }
我们可以通过任意的方式进行事件的监听,其种类超过65种,而且他还有一下几个坑
1.属性中存放是是方法体,他是
function(event){
with(xxx){
//这里面的内容,至于xxx的内容,跟具体事件有关 } }
2.属性化优先级高与脚本话
在dom解析式就进行的初始化比任何时候的脚本方式都快
3.监控的事件只存在一个
2+3=属性化方式第一个被覆盖
ie模型
为了收买前端猴子,ie产品经理提供了以下理念冒泡,派发,并且为element提供3大接口,在派发中的bean,则被声明为event(再次强调,当时的规范没这个+事件没有参数+js单线程执行===window.event)
dom模型
为了解放猴子,w3c提出统一的事件模型,他吸纳了大多数厂商的全部特性,以此妄想得到所有人的支持
jquery模型
因为历史遗留问题,并非所有流行的浏览器都支持最新模型(不吐槽ie678了,说不定微软早就想把他们砸了),既然了解了基础事件模型,干嘛不自己写一个兼容模型类?