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 |
Tags
- dom
- Flex
- 스크롤
- This
- ios
- input
- 클로저
- event
- 객체
- Push
- ES6
- 문자열
- 이벤트 위임
- json
- video
- 배열
- 이벤트
- scroll
- IntersectionObserver
- Promise
- 비동기
- 애니메이션
- 이벤트 루프
- ajax
- object
- array
- animation
- map
- 모듈
- slice
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