在触发DOM上的某个事件时,会产生一个事件对象event,这个对象包含着所有与事件有关的信息,包括导致事件的元素,事件类型以及其他与特定事件相关的信息.
DOM中的事件对象
兼容DOM的浏览器会将一个event传入事件处理程序中
//html
<body>
<input id = 'btn' type = 'button'/>
</body>
//css
var btn = document.getElementById('btn');
btn.onclick = function(event){
console.log(event);
console.log(event.type);
}
event输出是一个对象,并且非常庞大,在此截取一部分如下
event.type
输出是一个字符串'click',type
是event
的一个属性,表示事件类型
- 常见的
event
属性/方法
1.cancelable
:是否可以取消事件的默认行为
2.bubbles
:事件是否冒泡
3.currentTarget
:/事件处理程序当前正在处理的那个元素
4.target
:事件的实际目标
5.type
:被触发的事件类型
6.eventPhase
:表示事件处理程序的阶段,1
表示捕获2
表示处于目标3
表示冒泡阶段
7.preventDefault()
:取消事件的默认行为,如果cancelable属性是true,则可以使用这个方法
8.stopPropagation()
:取消事件的进一步捕获或者冒泡,如果bubbles为true则可以调用这个方法
只有在事件处理程序执行阶段,event才存在,一旦执行完成,event就会被销毁
IE中的事件对象
与访问DOM中的事件对象不同,访问IE中的event对象有几种不同的方式,取决于指定时间处理程序的方法
- 使用DOM0级方法添加事件处理程序
//html
<body>
<input id = 'btn' type = 'button'/>
</body>
//css
var btn = document.getElementById('btn');
btn.onclick = function(){
var event = window.event; //通过Window对象获取event对象
alert(event.type);//'click'
}
- 使用attachEvent()方法添加的事件处理程序
var btn = document.getElementById('btn');
btn.attachEvent('onclick',function(event){//可以通过window.event访问,也可作为参数传递
alert(event.type);
});
- 常见的属性和方法
1.cancelBubble
:默认值为false,设置为true就可以取消事件冒泡
2.returnValue
:默认值为false,设置为true就可以取消事件的默认行为
3.srcElement
:事件的目标
4.type
:被触发的事件类型