08年年初的一篇blog,转到这个博客上,想想当年跨浏览器真是一座山:
前几天看dojo的文档,其中多次提到DOM2事件模型,以前学习这部分的内容,主要愤慨于IE的不兼容性了,现在对于DOM2事件模型的概念又有些模糊,所以翻出了JS权威指南(V4)又复习了一下,简单作一小结。
JS权威指南中将JS事件模型分为四种
1、原始事件模型:属性事件处理模式
2、标准事件模型:DOM2对其作了标准化
3、IE事件模型(IE5.5/IE6)
4、 Netscape事件模型
原始事件模型
也就是基本事件处理,其实我们大多数人使用的JS事件处理模式都是这种代码方式。
其事件类型:分为"输入事件(如onclicki)"和"语义事件(如onsubmit)"
事件程序的注册可以以下几种方式:
1、JS代码作为HTML性质值
<input type="button" value="Press me" onclick="alert('thanks');"
<form name="f1"> <input name="b1" type="button" value="Press Me"/> </form>
document.f1.b1.onclick=function() { alert('thanks'); };
function plead() { window.status="Please Press Me!"; } document.f1.bi.onmouseover=plead;
document.myfrom.onsubmit();
<a href="help.htm" onmouseover="window.status='help';return true;">help</a>JS函数运行在词法作用域中,也就是定义他们的作用域中,因此作为HTML性质的JS事件处理程序,作用域链比较特殊,其头是调用对象(既这段JS代码),下一个对象是触发事件的对象既event.currentTarget,其后就是其包容层元素。整个作用域链的精确构成依赖于具体实现。
var e=document.createEvent("HTMLEvents");2)初始化事件对象域(即:属性)
e.initEcent("click","true","true");3)分派事件对象:
eventTarget.dispatchEvent();