js 에서 전통 사건 바 인 딩 시 뮬 레이 션 현대 사건 처리
7652 단어 js
예 를 들 어 메모리 누 출, 이벤트 추가 반복 및 트리거 시 거꾸로 실행 등 이다.
다음은 봉 인 된 이벤트 의 귀속 을 전통 적 인 이벤트 의 방법 으로 처리 합 니 다.
이벤트 바 인 딩 이벤트 추가:
addEvent.ID = 1; //
function addEvent(obj, type, fn){
if(obj.addEventListener){
obj.addEventListener(type, fn, false);
} else { // IE
// , , ,
// ,======= obj
if( !obj.events){
// :obj.events : {click:[fn1,fn2], mouserover:[fn1], ...}
obj.events = {};
}
var flag = false;
//
if( !obj.events[type]){
//
obj.events[type] = [];
//
obj.events[type][0] = fn;
} else {
var eventfn = obj.events[type];
// , flag true, return
for(var i in eventfn){
if(eventfn[i] == fn ){
flag = true;
return;
}
}
// , ,
if( !flag ){
// , ,
eventfn[addEvent.ID++] = fn;
}
}
//
obj["on"+type] = function(){
var event = window.event; //
// , , , W3C
event.preventDefault = function(){
this.returnValue = false;
};
// , , 。
event.stopPropagation = function(){
this.cancelBubble = true;
};
//
var evfn = obj.events[type];
for(var i in evfn){
// ,
evfn[i].call(this, event); // ,
}
}
}
}
이벤트 귀속 제거:
function removeEvent(obj, type, fn){
if(obj.removeEventListener){
obj.removeEventListener(type, fn, false);
} else {
// ,
var evefn = obj.events[type];
for(var i in evefn){
if(evefn[i] == fn){
// delete evefn[i]; , undefined
evefn.splice( i, 1); // i 1 ,
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.