EventUtilオブジェクト詳細
17545 ワード
EventUtilオブジェクト全見
以下のEventUtilオブジェクトコードは、親測定で利用できます.詳細な注釈が含まれています.
[オブジェクトの各メソッド名(緑のフォント)をクリックすると、この方法を紹介する部分に直接ジャンプできます.]
効果的にイベントを解決しました.
以下のEventUtilオブジェクトコードは、親測定で利用できます.詳細な注釈が含まれています.
[オブジェクトの各メソッド名(緑のフォント)をクリックすると、この方法を紹介する部分に直接ジャンプできます.]
var EventUtil={
addHandler:function(element,type,handler){ //
if(element.addEventListener){
element.addEventListener(type,handler,false); // DOM2
}else if(element.attachEvent){ // IE
element.attachEvent("on"+type,handler);
}else{
element["on"+type]=handler; // DOM0
}
},
removeHandler:function(element,type,handler){ //
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on"+type,handler);
}else{
element["on"+type]=null;
}
},
getEvent:function(event){ // 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){ // DOM
// document.body
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble=true;
}
},
getRelatedTarget:function(event){ // mouseover mouseout
if(event.relatedTarget){
return event.relatedTarget;
}else if(event.toElement){ // IE8-
return event.toElement;
}else if(event.formElement){
return event.formElement;
}else{
return null;
}
},
getButton:function(event){ // mousedown mouseup
if(document.implementation.hasFeature("MouseEvents","2.0")){
return event.button;
}else{
switch(event.button){ // IE button DOM button
case 0:
case 1:
case 3:
case 5:
case 7:
return 0; // ( )
case 2:
case 6:
return 2; //
case 4:
return 1; // ( )
}
}
},
getWheelDelta:function(event){ //
if(event.wheelDelta){
return event.wheelDelta;
}else{
return -event.detail*40;
}
},
getCharCode:function(event){ // , keypress
if(typeof event.charCode=="number"){
return event.charCode;
}else{
return event.keyCode;
}
}
};
本質的には、EventUtilは、ブラウザ間でイベントの違いやイベント方法の違いをバランスよく実現するために存在し、効果的にイベントを解決しました.