사람들은 JS의 이벤트 모니터링에 대해 더 많이 사용하지만 브라우저가 AddeventListener 및 AttachEvent를 지원하는지 여부를 판단하는 것 이상입니다. 이벤트 모니터링을 온라인으로 검색하는 방법에는 여러 가지가 있지만 일부는 그다지 완벽하지 않습니다. 다음 방법은 이벤트 청취를 추가하는 데 동일합니다. 이벤트 바인딩 취소에 대한 일부 수술이 수행되었으며 익명 기능의 사용을 지원할 수 있으므로 바인딩 이벤트가 더 이상 기능을 별도로 이름을 지정할 필요가 없습니다.
메인 코드 :
코드 사본은 다음과 같습니다.
/*바인딩 이벤트 및 풀림*/
var handlehash = {};
var bind = (function () {
if (window.addeventListener) {
반환 기능 (el, type, fn, capture) {
el.addeventListener (type, function () {
fn ();
handleHash [type] = handleHash [type] || [];
handleHash [type] .push (arguments.callee);
}, 캡처);
};
} else if (window.attachevent) {
반환 기능 (el, type, fn, capture) {
el.attachevent ( "on" + type, function () {
fn ();
handleHash [type] = handleHash [type] || [];
handleHash [type] .push (arguments.callee);
});
};
}
}) ();
var unbind = (function () {
if (window.addeventListener) {
반환 함수 (el, type) {
if (handlehash [type]) {
var i = 0, len = handlehash [type] .length;
for (i; i <len; i += 1) {
el.removeEventListener (유형, handleHash [type] [i]);
}
};
};
} else if (window.attachevent) {
반환 함수 (el, type) {
if (handlehash [type]) {
var i = 0, len = handlehash [type] .length;
for (i; i <len; i += 1) {
el.detachevent ( "on" + type, handleHash [type] [i]);
}
};
};
}
}) ();
원칙 분석 :
HandleHash는 해시 테이블을 수행하여 이벤트의 기능을 캐시합니다. HandleHash [ 'Event Name']는 여러 이벤트 청취 방법을 추가하는 배열입니다. 어떤 이벤트를 풀지 못하면, 핸들 하쉬 배열 [ '이벤트 이름']을 반복 한 다음 제거하십시오.
사용:
코드 사본은 다음과 같습니다.
bind (obj, 'click', function () {
경고 ( '클릭');
});
Unbind (obj, 'click');