不同的浏览器之间往往有兼容性问题,每执行一次做一次判断,可不可以不用做判断?
<script>
if( document.attachEvent ){
document.attachEvent("onmousewheel", move);
};
if( document.addEventListener ){
document.addEventListener("mousewheel", move, false);
document.addEventListener("DOMMouseScroll", move, false);
};
function checkUp(e){
if( e.wheelDelta ){
checkUp = function(e){
return e.wheelDelta > 0 ? true : false;
};
return e.wheelDelta > 0 ? true : false;
};
if( e.detail ){
checkUp = function(e){
return e.detail < 0 ? true : false;
};
return e.detail < 0 ? true : false;
};
};
function move(e){
var up = checkUp(e);
console.log(up);
if( e.preventDefault ){
e.preventDefault();
}else{
e.returnValue = false;
};
};
</script>
看checkUp函数,第一次执行的时候,内部对checkUp函数进行更改,后续都不用做判断。
当事件频繁调用的时候,而又存在浏览器兼容性问题,可以用这种方法优化:函数对外提供一个入口,初始在内部判断改变函数。