事件模块的演变(6)

基于“勿重复判断浏览器”的原则,将添加/删除/触发事件的三个分支重写。如下

var w3c = !!window.addEventListener,

	addListener = w3c ?
		function(el, type, fn) { el.addEventListener(type, fn, false); } :
		function(el, type, fn) { el.attachEvent('on' + type, fn); },
		
	removeListener = w3c ?
		function(el, type, fn) { el.removeEventListener(type, fn, false); } :
		function(el, type, fn) { el.detachEvent('on' + type, fn); };
	
	dispatch = w3c ?
		function(el, type){
			try{
				var evt = document.createEvent('Event');
				evt.initEvent(type,true,true);
				el.dispatchEvent(evt);
			}catch(e){alert(e)};
		} :
		function(el, type){
			try{
				el.fireEvent('on'+type);
			}catch(e){alert(e)}
		};

接口改为了on/un/fire

return {
	on : add,
	un : remove,
	fire : dispatch
};

event-0.3.js

posted on 2011-05-26 15:05  snandy  阅读(1501)  评论(0编辑  收藏  举报