`
fuhao_987
  • 浏览: 61554 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

js事件

阅读更多
事件:
DOM事件:firefox, opera, safari 和 chrome
专有事件:ie

DOM事件流:
document -> html -> body (捕获阶段)-> div(目标,事件发生) ->body -> html ->document(冒泡阶段)
包括HTML事件处理程序,DOM0级事件处理程序,DOM2级事件处理程序
DOM2级事件处理程序,两个方法addEventListener(事件名,事件处理程序函数,布尔值)和removeEventListener()
布尔值的参数:true->在捕获阶段调用事件处理程序;false->在冒泡阶段调用事件处理程序
例如:
addEventListener("click",function(){alert(this.id)},false);this->元素的作用域

IE事件:
两个方法attachEvent(事件处理程序名称,事件处理程序函数)和detachEvent()
例如:attachEvent("onclick",function(){alert(this === window)});//true,事件处理程序在全局作用域
-------------------------------------------------------------
跨浏览器的事件处理:
 var EventUtil = {
		addHandler: function(element, type, handler){
			if(element.addEventListener){
				element.addEventListener(type,handler,false);//dom2级
			}else if(element.attachEvent){
				element.attachEvent("on" + type,handler);//ie
			}else{
				element["on" + type] = handler;
			}
		},
		removerHandler: 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;
			}
		},
		getEvent: function(event){
			return event ? 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(event){
			if(event.stopPropagation){
				event.stopPropagation();
			}else{
				event.cancelBubble = true;
			}
		},//取消事件的进一步冒泡
		getRelatedTarget: function(event){
			if(event.relatedTarget){
				return event.relatedTarget;
			}else if(event.toElement){
				return event.toElement;
			}else if(event.fromElement){
				return event.fromElement;
			}else{
				return null;
			}
		},//取得相关元素的信息,只针对mouseover和mouseout
		getButton: function(event){
			if(document.implementation.hasFeature("MouseEvents","2.0")){
				return event.button;
			}else{
				switch(event.button){
					case 0:
					case 1:
					case 3:
					case 5:
					case 7:
						return 0;
					case 2:
					case 6:
						return 2;
					case 4:
						return 1;
				}
			}
		}//获得点击鼠标的情况
	};
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics