跨浏览器的事件对象

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<button id="btn">Click me</button>
	<script>
		var EventUtil = {
			//添加DOM方法
			addHandler:function(element,type,handler){
				//是否支持DOM2级方法
				if(element.addEventListener){
					element.addEventListener(type,handler,false);
				}
				//兼容IE8以及更早版本
				else if(element.attachEvent){
					element.attachEvent('on'+type,handler);
				}
				//DOM0级方法
				else{
					element['on'+click] = handler;
				}
			},
			//删除DOM方法
			removeHandler:function(element,type,handler){
				if(element.removeEventListener){
					element.removeEventListener(type,handler,false);
				}else if(element.detachEvent){
					element.detachEvent('on'+type,handler);
				}else{
					element['on'+type] = null;
				}
			},
			//获得事件对象event
			getEvent:function(event){
				return event || window.event;
			},
			//获得事件目标
			getTarget:function(event){
				return event.target || event.srcElement;
			},
			//取消事件冒泡
			stopPropagation:function(event){
				if(event.stopPropagation){
					event.stopPropagation();
				}else{
					//兼容IE以及低版本
					event.cancleBubble = true;
				}
			},
			//取消默认行为
			preventDefault:function(event){
				if(event.preventDefault){
					event.preventDefault();
				}else{
					event.returnValue = false;
				}
			}
		};
		var btn = document.getElementById('btn');
		btn.onclick = function(event){
			alert('clicked');
			//获取事件对象
			event = EventUtil.getEvent(event);
			//获取对象目标
			var target = EventUtil.getTarget(event);
			//取消事件冒泡,从而'body clicked 不会弹出'
			EventUtil.stopPropagation(event);
		};
		document.body.onclick = function(){
			alert('body clicked!');
		}
	</script>
</body>
</html>


在IE中,当event.returnValue = false时,取消默认行为,当event.cancleBubble = true时 取消事件冒泡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值