1、事件流——从页面中接收事件的顺序
IE——事件冒泡流
NetScape——事件捕获流
事件冒泡——事件最开始由最具体的元素(文档中嵌套最深的那个节点)接收,然后逐级向上传播至最不具体的节点(文档)。
事件捕获——不太具体的节点应该更早地接收事件,具体的节点最后接收到事件。
2、事件处理程序
HTML事件处理程序——直接在HTML代码中添加事件处理程序,如:
<input id="btn1" value="按钮" type="button" onclick="showmsg();">
<script>
function showmsg(){
alert("HTML添加事件处理");
}
</script>
DOM0级事件处理程序——指定对象添加事件处理,如:
<input id="btn2" value="按钮" type="button">
<script>
var btn2= document.getElementById("btn2");
btn2.onclick=function(){
alert("DOM0级添加事件处理");
}
btn.onclick=null;//如果想要删除btn2的点击事件,将其置为null即可
</script>
DOM2级事件处理程序——addEventListener()和 removeEventListener(),它们都接收三个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值(是否在捕获阶段处理事件),如:
<input id="btn3" value="按钮" type="button">
<script>
var btn3=document.getElementById("btn3");
btn3.addEventListener("click",showmsg,false);//这里我们把最后一个值置为false,即不在捕获阶段处理,一般来说冒泡处理在各浏览器中兼容性较好
function showmsg(){
alert("DOM2级添加事件处理程序");
}
btn3.removeEventListener("click",showmsg,false);//如果想要把这个事件删除,只需要传入同样的参数即可
</script>
3、IE事件处理程序
attachEvent()——添加事件
detachEvent()——删除事件
接收相同的参数:要处理的事件名、作为事件处理程序的函数
var btn=document.getElementById("mybtn");
var hander=function(){
alert("clicked");
}
btn.attachEvent("onclick",hander);
btn.detachEvent("onclick",hander);