在触发DOM上的某个事件时,会产生一个事件对象event,这个对象包含着所有与事件有关的信息。
DOM中的事件对象
兼容DOM的浏览器会将一个event对象传入到事件处理程序中。如:
var btn = document.getElementById("myBtn");
btn.obclick = function(event){
alert(event.type);
}
属性/方法 | 读写 | 说明 |
---|---|---|
bubbles | 只读 | 事件是否冒泡 |
cancelable | 只读 | 是否可以取消事件的默认行为 |
defaultPrevented | 只读 | 为true表示已经调用了preventDefault() |
preventDefault() | 只读 | 取消事件的默认行为 |
stopPropagation | 只读 | 取消事件的进一步捕获或冒泡 |
target | 只读 | 事件的目标 |
type | 只读 | 被触发的事件的类型 |
evnetPhase | 只读 | 1表示捕获阶段,2表示处于目标,3表示冒泡阶段 |
IE中的事件对象
与访问DOM中的event对象不同,要访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法。在使用DOM0级方法添加事件处理程序时,event对象作为window对象的一个属性存在。如:
var btn = document.getElementById("myBtn");
btn.onclick = function(){
var event = window.event;
alert(event.type);
}
属性/方法 | 读写 | 说明 |
---|---|---|
cancelBubble | 读/写 | 默认为false,但将其设置为true就可以取消事件冒泡 |
returnValue | 读/写 | 默认值为true,但将其设置为false就可以取消事件的默认行为 |
srcElement | 只读 | 事件的目标(与DOM中的target属性相同) |
type | 只读 | 被触发的事件的类型 |
跨浏览器的事件对象
var EventUtil = {
getEvent:function(event){
return event||window.event;
},
getTarget:function(event){
return event.target||event.srcElement;
},
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault();
}else {
event.returnValue = false;
}
},
stopPropagation:function(){
if(event.stopPropagation){
event.stopPropagation();
}else {
event.cancelBulle = true;
}
}
}