Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 비동기
- 이벤트
- object
- 이벤트 위임
- IntersectionObserver
- 배열
- dom
- video
- ios
- 고차함수
- input
- json
- slice
- 스크롤
- Push
- Flex
- 문자열
- ES6
- event
- 클로저
- 애니메이션
- 이벤트 루프
- array
- scroll
- animation
- Promise
- async
- ajax
- This
- 모듈
Archives
- Today
- Total
FEDev Story
[Event] 분리와 점진적 개선을 고려한 이벤트 처리 본문
분리와 점진적 개선을 고려한 이벤트 처리. 자주 사용하는 이벤트 유틸리티는 퍼사드 메서드로 만든다.
<button id="clickme">Click me: 0</button>
var myevent = {
'stop' : function(e){ //퍼사드메서드
// 이벤트 객체를 가져온다.
e = e || window.event;
// IE 이외의 모든 브라우저
// 기본동작이 수행되지 않게 한다.
if(typeof e.preventDefault === 'function'){
e.preventDefault();
}
// 이벤트가 상위 노드로 전파되지 않게 한다.
if(typeof e.stopPropagation === 'function'){
e.stopPropagation();
}
// IE
// 기본동작이 수행되지 않게 한다.
if(typeof e.returnValue === 'boolean'){
e.returnValue = false;
}
// 이벤트가 상위 노드로 전파되지 않게 한다.
if(typeof e.cancelBubble === 'boolean'){
e.cancelBubble = true;
}
}
}
var b = document.getElementById('clickme');
if (document.addEventListener) { // W3C
b.addEventListener('click', myHandler, false);
} else if (document.attachEvent) { // IE
b.attachEvent('click', myHandler);
} else { // last resort
b.onclick = myHandler;
}
function myHandler(e) {
var src, parts;
// get event and source element
e = e || window.event;
src = e.target || e.srcElement;
// actual work: update label
parts = src.innerHTML.split(": ");
parts[1] = parseInt(parts[1], 10) + 1;
src.innerHTML = parts[0] + ": " + parts[1];
myevent.stop();
}
'Javascript > ★★' 카테고리의 다른 글
비동기 작업을 순차대로 실행시키기 (0) | 2022.01.14 |
---|---|
Array 배열 개념 (0) | 2022.01.04 |
scroll event 최적화 함수 (0) | 2021.03.31 |
[Event] 이벤트 위임을 사용한 클릭이벤트 (0) | 2016.03.12 |
Comments