首页 > 代码库 > 最近遇到的一些问题总结

最近遇到的一些问题总结

1.jQuery事件绑定的时候,一定要小心多次绑定和重复绑定。

2.关于IE中image的onload事件失效解决问题,IE会从缓存里获取地址,如果存在的地址就会很快加载完,onload事件就会触发在绑定前。

解决办法,先绑定事件再传地址:

var i = new Image(); 
i.onload = function(){ }
i.src = http://www.mamicode.com/url;

 

3.滚轮事件:

IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件。

/*IE注册事件*/ if(document.attachEvent){ document.attachEvent(‘onmousewheel‘,scrollFunc); } 

Firefox使用addEventListener添加滚轮事件 

/*Firefox注册事件*/ if(document.addEventListener){ document.addEventListener(‘DOMMouseScroll‘,scrollFunc,false); } 

Safari与Chrome属于同一类型,可使用HTML DOM方式添加事件 
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome 
其中除Firefox外其余均可使用HTML DOM方式添加事件,因此添加事件使用以下方式

/*注册事件*/ if(document.addEventListener){ document.addEventListener(‘DOMMouseScroll‘,scrollFunc,false); }//W3C window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome 

detail与wheelDelta 

判断滚轮向上或向下在浏览器中也要考虑兼容性,现在五大浏览器(IE、Opera、 Safari、Firefox、Chrome)中Firefox 使用detail,其余四类使用wheelDelta;两者只在取值上不一致,代表含义一致,detail与wheelDelta只各取两个值。 //wheelDelta -120是向下,120向上,detail 3是向下,-3向上

*************************/ var scrollFunc=function(e){ var direct=0; e=e || window.event;   if(e.wheelDelta){//IE/Opera/Chrome   }
  else if(e.detail){//Firefox   } ScrollText(direct); } /*注册事件*/ if(document.addEventListener){ document.addEventListener(‘DOMMouseScroll‘,scrollFunc,false); }//W3C window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari
</script>

最近遇到的一些问题总结