事件对象
事件触发时,浏览器会给事件处理程序传一个对象event,这个对象封装了与事件相关的信息,比如事件类型,事件的目标元素...
DOM中的事件对象
兼容DOM的浏览器会将一个event对象传入到事件处理程序中。
属性:
bubbles 表明事件是否冒泡
cancelable 表明是否可以取消事件的默认行为
currentTarget 事件处理程序当前正在处理事件的那个元素
target 事件的真正目标对象
type 事件类型
eventPhase 调用事件处理程序的阶段:返回值是1表示捕获阶段 ,2表示处于目标阶段,3表示冒泡阶段
方法:
preventDefalut() 取消事件的默认行为。如果cancelable为true,则可以使用这个方法
stopPropagation() 取消事件的进一步捕获或冒泡。如果bubbles为true,则可以使用该方法
注意: 只有在事件处理程序执行期间,event对象才会存在;一旦事件处理程序完成,event对象就会被销毁。
IE中的事件对象
属性:
cancelBubble 默认值是false,设置为true就可以取消事件冒泡(与DOM中的stopPropagation()方法的作用一致)
returnValue 默认值是false,设置为true就可以取消事件的默认行为(与DOM中的preventDefalut()方法的作用一致)
srcElement 事件的真正目标(与DOM中的target属性相同)
type 事件的类型
跨浏览器的事件对象
1. 事件对象跨浏览器
// 方法1
var e = e || event;
// 方法2
var e = event || window.event;
2. 事件的真正目标对象(跨浏览器)
var target = event.target || event.srcElement;
3. 阻止默认行为(跨浏览器)
// 方法1(IE8以上支持)
<a href="http://www.163.com" id="alink">去网易</a>
alink.onclick = function() {
alert("click");
return false; // 阻止浏览器的默认行为
}
// 方法2
alink.onclick = function(e) {
var e = e || event;
e.preventDefalut?e.preventDefalut():e.returnValue = false;// 阻止默认行为 点击a元素不会跳转到网易
}
4. 阻止事件冒泡(跨浏览器)
e.stopPropagation?e.stopPropagation():e.cancelBubble();// 阻止事件冒泡