var addEvent = function(el,type,handler){
addEvent = el.addEventListener ? function(el,type,handler){
el.addEventListener(type,handler,false);
} : function(el,type,handler) {
el.attachEvent("on" + type,handler);
}
addEvent(el,type,handler);
};
这是网上看到的一个判断兼容性的
他是说只检查一次兼容性,以后就不会再检查了,我不太明白为什么指检查了一次呢?如果以后都不检查,他是怎么记住的呢???
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第一次调用addEvent的时候,addEvent内部对兼容性做了一次判断并且重写了addEvent,所以后续就不用判断了。
首先我不认为你找的代码是OK的,试一试下面的
var addEvent =(function(el,type,handler){ addEvent = el.addEventListener ? function(el,type,handler){ el.addEventListener(type,handler,false); } : function(el,type,handler) { el.attachEvent("on" + type,handler); }
})();
解释 :使用一个立即函数执行后addEvent就是指定的兼容事件监听的函数。
var addEvent这句只会执行一次。
后面调用addEvent函数时,就会使用上面var指定的函数。。。
其实我也遇到了这个问题。今天 在学 函数惰性加载。
出现的问题是 在ie 出现堆栈溢出。