事件

首先说明:IE的事件流是事件冒泡流。

事件冒泡:事件开始时由由最具体的元素接收,然后逐级向上传播到较为不具体的节点。
事件捕获:不太具体的节点更早接收到,最具体的节点最后接收到事件。

DOM事件流:DOM2级事件流包括三个阶段:1.事件捕获阶段,2.目标阶段,3.事件冒泡阶段(前到后顺序)
IE8及更早版本不支持DOM事件流。
在这里插入图片描述

–事件处理程序:
**-HTML事件处理程序:**直接在button onclick
-DOM0级事件处理程序:
通过JavaScript指定事件处理程序的传统方式,就是将一个函数赋值给一个事件处理程序属性

var btn = document.getElementById("myBtn");
btn.onclick = function(){
//DOM0级事件处理作用域:this指向当前元素
alert("Clicked");
};

通过btn.onclick = null移除;
-DOM2级事件处理程序:
addEventListener(“click”,func,“是否在捕获阶段被触发”)
removeEventListener()

–IE事件处理程序
attachEvent(“onclick”,func)添加的事件处理程序会被添加到冒泡阶段
detachEvent();
与DOM0级方法的主要区别在于事件处理程序的作用域:attachEvent事件处理程序在全局作用域中运行

var btn = document.getElementById("myBtn");
btn.attachEvent("onclick", function(){
alert(this === window); //true
});

–在编写跨浏览器程序时需要特别注意:
addEventListener(“click”,func,是否捕获阶段执行)和attachEvent(“onclick”,func)都可以为同一个元素添加多个事件处理程序,但是与DOM方法(addEventListener)不同的是,这些事件处理程序不是按照他们的添加顺序执行,而是按照相反的方式执行。

//下面的代码,首先看到hello world;
var btn = document.getElementById("myBtn");
btn.attachEvent("onclick", function(){
alert("Clicked");
});
btn.attachEvent("onclick", function(){
alert("Hello world!");
});

总结DOM事件与IE事件处理程序区别:(如有不对欢迎指正)
1.传递参数不同 DOM第一个参数没有"on",并且DOM事件流传递的第三个参数表示是否在捕获阶段执行;
2.IE事件处理程序没有第三个参数,会在冒泡阶段执行;

–本文参考JavaScript高级程序设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值