1、DOM事件流:
2、DOM2级事件处理程序
使用DOM2级方法添加事件处理程序的主要好处是可以添加多个事件处理程序。
来看例子<!DOCTYPE html>
<html>
<head>
<title>DOM Level 2 Event Handler Example</title>
</head>
<body>
<input type="button" id="myBtn" value="Click Me" />
<p>This example won't work in Internet Explorer.</p>
<script type="text/javascript">
var btn = document.getElementById("myBtn");
btn.addEventListener("click", function(){
alert(this.id);
}, false);
btn.addEventListener("click", function(){
alert("Hello world!");
}, false);
</script>
</body>
</html>
通过addEventListener()添加的事件处理程序只能使用removeEventListener()来移除,但添加的匿名函数将无法移除。
支持DOM2级事件处理程序的有IE9、FireFox、Safari、Chrome和Opera
IE事件处理程序
IE实现了与DOM类似的两个方法:attachEvent()和detachEvent()。这两个方法接受两个参数:事件处理程序名称和处理程序函数。
3、跨浏览器的事件处理程序
var EventUtil = {
addHandler: function(element, type, handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
} else if (element.attachEvent){
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
},
removeHandler: function(element, type, handler){
if (element.removeEventListener){
element.removeEventListener(type, handler, false);
} else if (element.detachEvent){
element.detachEvent("on" + type, handler);
} else {
element["on" + type] = null;
}
};
具体请参考《JavaScript高级程序设计第三版》