首頁  >  文章  >  web前端  >  跨瀏覽器的事件物件介紹_javascript技巧

跨瀏覽器的事件物件介紹_javascript技巧

WBOY
WBOY原創
2016-05-16 17:52:181107瀏覽
複製程式碼 程式碼如下:

var eventUtil = {
getEvent : function(event) {
return event ? event : window.event;
};
getTarget : function(event){
return event.target || event.srcElement;
};
preventDefault : function (event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false;
}
};
stopPropagation : function(event){
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble = true;
}else{
event.cancelBubble = true;
}else{
event.cancelBubble = true;
}else{
event.cancelBubble = true;
}else{
event.cancelBubble = true;
}else{ event.cancelBubble = true; }else{ event.cancelBubble = true; }else{ event.cancelBubble = true; }else{
event.cancelBubble = =};
};


  當使用一個DOM相容的瀏覽器時,event 變數只是傳入並被返回,在IE中event參數將是undefined ,因此window.event將會被傳回,所以採用eventUtil.getEvent()方法無論在dom或IE上event傳回值都是可用的。
  同理第二個方法,getTarge()方法,先偵測event物件的target屬性,若存在,則傳回targe,若為IE瀏覽器則傳回srcElement屬性。保證相容性。



複製代碼
代碼如下: btn.onclick = function(event){ event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event);
};


  第三個方法,preventDefault ()方法,當event入時,先偵測event物件的preventDefault()方法是否可用,若可用則呼叫preventDefault方法,若無法將event的returnValue 設為false。
  例如:
  



複製程式碼
代碼.getElementById("myLink"); link.onclick = function(event){ event = EventUtil.getEvent(event); EventUtil.preventDefault(event); }; EventUtil.preventDefault(event);
};
EventUtil.preventDefault(event);
};
EventUtil.preventDefault(event);
};
EventUtil.preventDefault(event);
};

  這段程式碼阻止了一個link標籤的預設行為,event物件來自於EventUtil的getEvent方法的傳回值並作為preventDefault()方法的傳入參數。
  第四個方法stopPropagation(),用同樣的方法,首先嘗試DOM方法,之後嘗試cancelBubble屬性,例如下面的代碼:


複製代碼 程式碼如下: var btn = document.getElementById("myBtn"); btn.onclick = function(event){ alert("Clicked "); event = EventUtil.getEvent(event); EventUtil.stopPropagation(event); }; document.body.onclick = function(event){ alert(" Body clicked"); }; 記得這個方法可能阻止事件在瀏覽器的冒泡階段或同時阻止事件在瀏覽器的冒泡和捕捉階段。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn