您的位置:首页 > Web前端 > JavaScript

【学习点滴-js】js 中事件对象封装。

2012-04-13 15:43 369 查看
由于浏览器的差异。事件中的一些处理不得不出现大量这样类似的代码 var event = event?event:window.event;

这当然不是我们想要的,于是需要把常见的事件处理封装起来,便于我们方便地使用。

javascript 高级程序设计中封装代码如下:

var EventUtil = {
		/* 添加时间处理程序 */
		addHandler : function(element,type,handler){
			if(element.addEventListener){
				element.addEventListener(type,handler,false);
			}else if(element.attachEvent){
				element.attachEvent("on"+type,handler);
			}else{
				element["on"+type] = handler;
			}
		},
		/* 获取event对象的引用 */
		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;
			}
		},
		/* 移除时间处理程序 */			
		removeHandler : function(){
			if(element.removeEventListener){
				element.removeEventListener(type,handler,false);
			}else if(element.detachEvent){
				element.detachEvent("on"+type,handler);
			}else{
				element["on"+type] = null;
			}
		},
		/* 阻止事件流继续传播 */
		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;
			}
		},
		/*获取按键编码*/
		getCharCode : function(event){
			return (typeof event.charCode == "number")?event.charCode:event.keyCode;
		},	
		//获取剪切板数据
		getClipboardText:function(event){
			var clipboardData = window.clipboardData || event.clipboardData;
			return clipboardData.getData("text");
		}	
	};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: