勿重复检测浏览器

拿添加事件示例

 

Js代码 复制代码  收藏代码
  1. // 方式1   
  2. function addEvent(el, type, fn){   
  3.     if(el.addEventListener){   
  4.         el.addEventListener(type, fn, false);   
  5.     }else{   
  6.         el.attachEvent('on'+type, fn)   
  7.     }   
  8. }   
  9.   
  10. // 方式2   
  11. var addEvent = document.addEventListener ?   
  12.         function(el, type, fn) {el.addEventListener(type, fn, false);} :   
  13.         function(el, type, fn) {el.attachEvent('on'+type, fn)};  
// 方式1
function addEvent(el, type, fn){
	if(el.addEventListener){
		el.addEventListener(type, fn, false);
	}else{
		el.attachEvent('on'+type, fn)
	}
}

// 方式2
var addEvent = document.addEventListener ?
		function(el, type, fn) {el.addEventListener(type, fn, false);} :
		function(el, type, fn) {el.attachEvent('on'+type, fn)};

 

方式1在函数内做判断,每次给元素添加事件都需判断一次,效率相对低一些。
jQuery 1.6.1/Prototype 1.7/Mootools 1.3/tangram 1.3.6/reg.js/right.js都是采用这种分支方式。


方式2使用了两个匿名函数,仅在初始化时判断一次,后每次调用无须判断。效率相对高一些。
Ext/kissy/qwrap 采用这种分支写法。

 

 

 

转自:http://snandy.iteye.com/blog/1152280

你可能感兴趣的:(浏览器)