事件流:
DOM0级事件流分为事件捕获和事件冒泡
1冒泡:从内到外,从子到父
2捕获:从父到子,从外到内
DOM2级事件流:事件捕获阶段、处于目标阶段和事件冒泡阶段。融合了DOM0
1事件捕获阶段(找):从外向内遍历DOM树 document->html->body->outer 只是找到对象,并不执行事件
2找到目标处于目标:事件触发目标第二阶段和第三阶段都是有事件处理程序发生
3.事件冒泡:从里向外
事件处理程序:
原生三种:
DOM0级:两种;
DOM2级:一种(但是DOM2级得考虑兼容性写法)
0级DOM分为2个:一是在标签内写onclick事件;二是在JS写onlicke=function(){}函数
1)<input id="myButton" type="button" value="Press Me" onclick="alert('thanks');">
2)document.getElementById("myButton").onclick = function () { alert('thanks');}
1级DOM--(为什么没有1级DOM)
DOM级别1于1998年10月1日成为W3C推荐标准。1级DOM标准中并没有定义事件相关的内容,所以没有所谓的1级DOM事件模型。在2级DOM中除了定义了一些DOM相关的操作之外还定义了一个事件模型 ,这个标准下的事件模型就是我们所说的2级DOM事件模型
2级DOM
优点:可以删除事件,可以为元素添加多个事件处理程序
只有一个:监听方法,有两个方法用来添加和移除事件处理程序:addEventListener()和removeEventListener()。
它们都有三个参数:
第一个参数是事件名(如click);第二个参数是事件处理程序函数;第三个参数如果是true则表示在捕获阶段调用,为false表示在冒泡阶段调用。
addEventListener():可以为元素添加多个事件处理程序,触发时会按照添加顺序依次调用。
removeEventListener():不能移除匿名添加的函数。
//IE添加事件:document.getElementById("myTest").attachEvent("onclick", function(){alert(1)});
//IE删除事件:btn.detachEvent('onclick' ,function(){})
//其他浏览器添加事件:document.getElementById("myTest").addEventListener("click", function(){alert(1)}, false);
//其他浏览器删除事件:btn.removeEventListener("click", fn, false);