예전에 이런 작은 문제가 발생했는데 요약하지 않았습니다
지금 다시 발생했습니다. 정확한 결론을 내리기 위해 기록했습니다.
예: 여러 실행 함수 사이에 Event 개체가 있습니까?
예:
dom.addEvent('click', fna);
dom.addEvent('click',fnb)
1: Event 객체에 추가된 속성 fna는 이후에 실행되는 fnb 함수의 Event 개체에 대한 것입니다.
2: fna/fnb 함수 실행 시 Event 개체가 Eventfna====Eventfnb와 일치합니까? >표준 문서가 너무 깁니다
여기서 설명은 어디에 있나요? 게으르다...
Jquery의 경우 동일한 이벤트에 대해 여러 실행 함수 간의 Event 개체가 일치합니다. Jquery 라이브 바인딩 이벤트 구현 시 반복적으로 실행될 수 있는 liveHandler 함수의 경우 Event 객체에 추가로 제공된 liveFired 속성을 사용하면 처음 실행된 이후 liveHandler 시작 부분에서 함수가 종료됩니다. 🎜>
코드 복사
}
///....
event.liveFired = this
테스트:
코드 복사
alert(a );
};
prevIeEvent=window.event;
function b(e,event) {
e.abc(); //fn
alert(e === prevEvent); //true
if(event=window.event){
alert(event===e); false
alert(event== =prevIeEvent);//false
alert(event===prevEvent);//false
}
}
var t = document.getElementById(" p");
if ( t.addEventListener) {
t.addEventListener('click', a, false);
t.addEventListener('click', b, false)
} else {
t.attachEvent(' onclick', b);
t.attachEvent('onclick', a)
}
네이티브 바인딩 이벤트 메소드의 경우 [addEventListener, attachmentEvent], 다중 실행 함수의 경우 Event 객체(매개변수를 통해 전달된 이벤트)가 일치합니다. IE에서는 window.event를 통해 얻은 Event 객체가 일치하지 않습니다. 매개변수를 통해 전달된 이벤트와 동일하지 않습니다.
버블링 이벤트의 경우:
코드 복사
jquery에서는 이벤트가 트리거 형식으로 트리거될 때 버블링 이벤트 이벤트 객체는 합동입니다. 실제 사용자 작업에 의해 트리거되는 이벤트는 동일한 개체가 아닙니다. 맞춤 속성도 전달할 수 없습니다. 값 설정은 실제 원본 이벤트에 영향을 주지 않습니다.
네이티브 바인딩 이벤트 메소드 사용 [addEventListener,attachEvent]:
코드 복사
prevEvent = e; ;
}
function b(e,event) {
alert(e.abc); //fn
alert(e === prevEvent) //true
if(event) =window .event){
alert(event===e); //false
alert(event===prevIeEvent);//false
alert(event===prevEvent);// false
}
}
var t = document.getElementById("p");
if (t.addEventListener) {
t.addEventListener('click', a, false);
document.body.addEventListener('click', b, false)
} else {
t.attachEvent('onclick', a)
document.body.attachEvent('onclick' , b );
}
attachEvent가 이벤트에 바인딩되면 IE의 버블링 이벤트 사이에 있는 함수 내의 Event 개체가 일치하지 않게 됩니다. FF 등은 addEventListener와 일치하는 객체입니다.
실제로 IE가 아닌 경우 이벤트 개체 전파 간의 처리 기능 또는 동일한 DOM 노드에 의해 트리거되는 여러 기능 간의 이벤트 개체가 일치합니다. 바인딩 형식 [addEventListener/DOM0]과는 아무런 관련이 없습니다.
IE에서는 동일한 DOM 노드에 의해 트리거된 여러 함수 간의 매개변수를 통해 전달된 이벤트 객체(attachEvent)만 일치합니다.