事件流:元素接收事件的顺序
1.事件冒泡:事件由最具体的元素开始接收,逐级向上传递到document元素。即从里到外。
2.事件捕获:由外到里,先接收的是document然后逐级向内,最后才到具体的元素。
DOM0级事件处理程序
给元素绑定一个事件:element.event = function(){};
比如:给按钮加一个点击事件,弹出这是一个按钮 var obtn = document.getElementById('btn');
obtn.onclick = function(){alert("这个是按钮");}
取消元素绑定的事件可以将执行的函数改为空 obtn.onclick = null;
0级只能绑定一个同名的事件,绑定两个及以上时,后面的会覆盖前面的,只能显示最后绑定的那个。
DOM2级事件处理程序
添加事件 addEventListenner();里面接收三个参数:事件名,执行的函数,是否冒泡(事件名不要加on;true为冒泡 false不冒泡)。
移除事件 removeEventListenner();里面也是三个参数,与添加事件的参数一致才能移除;
dom2会有兼容性问题 IE9以前版本并不识别addeventlistenner 和 removeEventListenner
ie:添加事件 attachEvent()和dettachEvent();接收两个参数:事件名(有on),执行的函数;
在使用时,通常要用能力检测:if(addEventListenenr){addEventListenenr();}else(){attachEvent();}
if(removeEventListenenr){removeEventListenenr();}else(){dettachEvent();}
dom2级可以给同一个元素绑定多个同名的事件。
DOM事件对象 event
事件对象:在触发DOM上的事件都会产生一个对象 event 里面保存着这个事件的所有内容
介绍几个常用的属性和方法:
1.type属性,用于获取事件类型 eg:obtn.onclick = function(event){alert(event.type);} //弹出click.
2.target属性,用于获取事件目标,即被绑定事件的元素。
3.stopProgation()方法,用于阻止冒泡
4.preventDefault()方法,用于阻止默认行为 比如a元素默认是跳转到另一个页面打开url的地址
调用event.preventDefault();就不会跳转。
IE中的事件对象
1.type属性与DOM中的一致;
2.获取事件目标:srcElement属性
3.阻止事件冒泡是用cancelBubble属性 设置为true
4.阻止默认行为:returnValue属性设置为false
兼容性:ie8之前不能识别event,用的是window.event
处理办法:var event = event || window.event;