99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋(píng)果6袋
6
麥子學(xué)院

Javascript學(xué)習(xí)之事件庫(kù)的封裝詳解

發(fā)布時(shí)間:2017-07-30 23:31  回復(fù):0  查看:2250   最后回復(fù):2017-07-30 23:31  
本文和大家分享的主要是javascript 中事件庫(kù)封裝相關(guān)內(nèi)容,一起來(lái)看看吧,希望對(duì)大家 學(xué)習(xí)javascript 有所幫助。
  在瀏覽器中,對(duì)于事件的操作,兼容性主要是存在  DOM2  級(jí)事件里面,標(biāo)準(zhǔn)瀏覽器是通過(guò)  addEventListener()  removeEventListener()  來(lái)注冊(cè)事件和綁定事件,在低級(jí)版本的  IE瀏覽器  里面是有對(duì)應(yīng)的  attachEvent()  detachEvent()  ;再者是里面?zhèn)魅氲氖录袨?,?biāo)準(zhǔn)的不帶  on   IE    on  ;接著是事件處理函數(shù)里面的  this  指向;事件重復(fù)綁定的問(wèn)題,事件綁定順序與執(zhí)行順序的問(wèn)題
  //  事件綁定的元素,事件類(lèi)型,事件處理函數(shù) function  on(ele, type,fn){
  //  區(qū)分瀏覽器
   if(ele.addEventListener){
  ele.addEventListener( type,fn,false);//  冒泡
  } else{ // IE6-8
   if(!ele['on'+ type]){
  ele['on'+ type]=[];
  // 解決 run 被重復(fù)綁定的問(wèn)題
  ele.attachEvent('on'+ type, function(){
  run.call(ele);
  })
  }
  //  去重判斷,解決重復(fù)綁定的問(wèn)題
   for( var i=0;i<ele['on'+ type].length;i++){
   if(a ===fn) return;
  }
  ele['on'+type].push(fn);
  }
  }//拿到"數(shù)組"中的每個(gè)方法,進(jìn)行順序調(diào)用 主要是針對(duì)IE瀏覽器的設(shè)置function run(){
  var e=window.event;
  //對(duì)事件對(duì)象做兼容處理
  e.target=e.srcElement; // 事件源
  e.pageX=(document.documentElement.scrollLeft||document.body.scrollLeft)+e.clientX; // clientX/Y:鼠標(biāo)點(diǎn)擊的位置距離可視區(qū)頁(yè)面左上角的距離   scrollLeft:是滾動(dòng)條滾動(dòng)的距離(IE兼容處理),pageX/Y:鼠標(biāo)在頁(yè)面上的位置,從頁(yè)面左上角開(kāi)始,即是以頁(yè)面為參考點(diǎn),不隨滑動(dòng)條移動(dòng)而變化
  e.pageY=(document.documentElement.scrollTop||document.body.scrollTop)+e.clientY;
  e.preventDefault=function(){//阻止默認(rèn)事件
  e.returnValue=false;
  };
  e.stopPropagation=function(){
  e.cancelBubble=true;//阻止冒泡;
  };
  // this是指向ele
  var a=this["on"+e.type];
  if(a.length){//證明數(shù)組有長(zhǎng)度,可以循環(huán)調(diào)用;
  for(var i=0; i<a.length; i++){
  if(typeof  a==='function'){
  a.call(this,e);//fn1 fn2 fn3
  }else{
  a.splice(i,1); // 移除
  i--; // 防止數(shù)組塌陷
  }
  }
  }
  }
  //"數(shù)組"中找到要"解除綁定"的方法,賦值為nullfunction off(ele,type,fn){
  if(ele.removeEventListener){
  ele.removeEventListener(type,fn,false);
  }else{
  //拿到數(shù)組,遍歷判斷,并賦值為null
  var a=ele["on"+type];
  for(var i=0; i<a.length; i++){
  if(a===fn){
  a=null;
  break;
  }
  }
  }
  }
來(lái)源:簡(jiǎn)書(shū)
您還未登錄,請(qǐng)先登錄

熱門(mén)帖子

最新帖子

?