SlideShare a Scribd company logo
1 of 20
Download to read offline
JavaScript Event Bubbling & Capturing 
2014. 11. 24 
Version : 1.0.0 
made by 신혜미 
R&D팀
2 
CONTENTS. 
1. 들어가면서 ………… 2 
2. Bubbling …………… 4 
3. Capturing …………… 6 
4. stopPropagation … 8 
5. preventDefault … 10 
6. Summary ………… 16 
7. Reference ………… 19
3 
1. 
들어가면서… 
10월 컨퍼런스에서 다룬 주제 
•mouseover 
•사실은… 
Event type 
MouseEvent 
Supported HTML tags 
All HTML elements, EXCEPT: <base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>, <script>, <style>, and <title> 
<w3schools.com> 
Bubbles 
Yes 
Cancelable 
Yes 
Event Type 
MouseEvent 
Supported HTML tags 
All HTML elements, EXCEPT: <base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>, <script>, <style>, and <title> 
<w3schools.com>
4 
1. 
Bubbles와 Canclelable 
Bubbles? Canclelable? 궁금증 
Bubbles 
Cancelable 
그것이 알고싶다!
5 
1. 
파헤쳐보기 
궁금하다면! 
폭풍 검색
6 
1. 
들어가면서 
다시 들어가면서… 
Bubbles와 cancelable을 이해하기 위해 알아야 할 것들, 그리고 알게 된 것들 
1)Bubbling 
2)Capturing 
3)event.stopPropagation 
4)event.preventDefault
7 
2. 
Bubbling 
거품이 뽀글뽀글 
•이벤트가 발생한 엘리먼트에서 부모 엘리먼트까지 이벤트 발생 
•1, 2, 3번 엘리먼트에 onclick 이벤트가 바인딩 되어있다고 가정 
•3번 엘리먼트에 onclick 이벤트가 발생 했을 경우 - 이벤트 발생 순서 : 3 -> 2 -> 1
8 
2. 
Bubbling 
거품이 뽀글뽀글 
•Bubbling order - 수면에서 공기방울이 올라오는 것처럼 가장 내부의 엘리먼트에서 부모 엘리먼트까지 이벤트 발생 
•예제 확인
9 
2. 
Bubbling : this vs event.target 
거품이 뽀글뽀글 
•this : 이벤트가 발생한 엘리먼트 
•event.target : 이벤트가 최초 발생한 엘리먼트 
•3번 엘리먼트에 onclick 이벤트가 발생했다고 가정 
•예제 확인
10 
3. 
Capturing 
설명 
•이벤트 발생 과정 2가지 - Capturing - Bubbling 
•버블링과 반대 방향으로 발생 
•이벤트가 처음 발생 시 가장 상위 엘리먼트에서 하위 엘리먼트로 캡쳐링이 발생
11 
3. 
Capturing 
캡쳐하기 
•1 -> 2 -> 3의 순서로 이벤트 캡쳐링이 발생 
•3 -> 2 -> 1의 순서로 이벤트 버블링이 발생
12 
3. 
Capturing 
캡쳐하기 
•이벤트를 핸들링하는 모든 메소드들은 캡쳐링이 무시되며, 이벤트의 캡쳐링을 확인 하기 위해선 addEventListener를 사용해야 함 - 예 : elem.addEventListener( type, handler, phase ); - phase = true : handler를 캡쳐링 단계에서 동작하도록 설정 - phase = false : handler를 버블링 단계에서 동작하도록 설정 
•캡쳐링 예제 확인 
•캡쳐링과 버블링 예제 확인
13 
4. 
event.stopPropagation 
정지! 
•Propagation - 전파, 확산 
•이벤트가 발생한 엘리먼트에서 부모 엘리먼트로 Bubbling 발생 
•Bubbling을 막기위해 사용 
•예 - <div onclick=“click();”></div> function click(){ event.stopPropagation(); } 
•참고 - IE : event.cancelBubble=true 
•stopPropagation 예제 확인
14 
5. 
event.preventDefault 
안돼. 꿈도 꿀 생각 하지마 
•별도의 특정 이벤트를 막기 위해 사용 
•<a> 태그 
•예 - <a href=“http://www.xxxx.com” onclick=”…”></a> - a 태그를 클릭 했을 경우 두가지 이벤트 발생 1) click 이벤트 실행 2) href에 표시된 브라우저로 이동 - a 태그의 click 이벤트만 실행하고 싶을 경우 1) <a href=“#” onclick=”…”></a> 2) event.preventDefault()
15 
5. 
event.preventDefault 
안돼. 꿈도 꿀 생각 하지마 
•a 태그의 click 이벤트만 실행하고 싶을 경우 1) <a href=“#” onclick=”…”></a> 2) event.preventDefault() 
•1) 의 단점 - 웹 브라우저의 페이지 상단으로 이동
16 
5. 
Summary 
마무리 
•이벤트는 처음에 Captured down, 그리고 Bubbles up의 순서로 발생
17 
5. 
Summary 
마무리 
•stopPropagation vs preventDefault 
Method 
stopPropagation 
preventDefault 
Description 
Bubbling의 전파를 막기 위해 사용 
•엘리먼트의 default action을 막기 위해 사용 
•Form의 Submit 버튼이나 url의 link 
Example 
event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true) 
event.preventDefault() 
Tip 
event.isPropagationStopped() 를 통해 stopPropagation 메소드가 호출 되었는지 확인 
event.isDefaultPrevented() 를 통해 preventDefault 메소드가 호출 되었는지 확인
18 
5. 
Summary 
마무리 
•mouseover vs mouseenter 
Event 
mouseover 
mouseenter 
click 
keydown 
Browser Support 
•Chrome : Yes 
•IE : Yes 
•FireFox : Yes 
•Safari : Yes 
•Opera : Yes 
•Chrome : 30 
•IE : 5.5 
•FireFox : Yes 
•Safari : 6.1 
•Opera : 11.5 
•Chrome : Yes 
•IE : Yes 
•FireFox : Yes 
•Safari : Yes 
•Opera : Yes 
•Chrome : Yes 
•IE : Yes 
•FireFox : Yes 
•Safari : Yes 
•Opera : Yes 
Bubbles 
Yes 
No 
Yes 
Yes 
Cancelable 
Yes 
No 
Yes 
Yes 
Event Type 
Mouse event 
Mouse event 
Mouse event 
Keyboard Event
19 
6. 
Reference 
도우미들 
•http://javascript.info/ 
•http://mohwaproject.tistory.com/entry/dom-event-bubbling- capture%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC 
•http://ismydream.tistory.com/98 
•http://www.w3schools.com/
20

More Related Content

What's hot

[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리구 봉
 
04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재Hankyo
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!우영 주
 
04.모바일 device api_실습교재
04.모바일 device api_실습교재04.모바일 device api_실습교재
04.모바일 device api_실습교재Hankyo
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)DK Lee
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
 
03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)Hankyo
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3J B
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는Taegon Kim
 
React 튜토리얼 2차시
React 튜토리얼 2차시React 튜토리얼 2차시
React 튜토리얼 2차시태현 김
 
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기DoHyun Jung
 
Spring@mvc웹호스팅
Spring@mvc웹호스팅Spring@mvc웹호스팅
Spring@mvc웹호스팅J.H Ahn
 
[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc구 봉
 
자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)Yu Yongwoo
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장JeongBong Kim
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Kim Hunmin
 
20131217 html5
20131217 html520131217 html5
20131217 html5DK Lee
 
Spring mvc
Spring mvcSpring mvc
Spring mvcksain
 

What's hot (19)

[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리
 
04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!
 
04.모바일 device api_실습교재
04.모바일 device api_실습교재04.모바일 device api_실습교재
04.모바일 device api_실습교재
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는
 
React 튜토리얼 2차시
React 튜토리얼 2차시React 튜토리얼 2차시
React 튜토리얼 2차시
 
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
 
Spring@mvc웹호스팅
Spring@mvc웹호스팅Spring@mvc웹호스팅
Spring@mvc웹호스팅
 
[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc
 
자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까?
 
역시 Redux
역시 Redux역시 Redux
역시 Redux
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 

Viewers also liked

System webpack-jspm
System webpack-jspmSystem webpack-jspm
System webpack-jspmJesse Warden
 
Ionic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksIonic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksJuarez Filho
 
Compose Async with RxJS
Compose Async with RxJSCompose Async with RxJS
Compose Async with RxJSKyung Yeol Kim
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS偉格 高
 
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9yamoo9
 
Haml And Sass In 15 Minutes
Haml And Sass In 15 MinutesHaml And Sass In 15 Minutes
Haml And Sass In 15 MinutesPatrick Crowley
 
Web Development with CoffeeScript and Sass
Web Development with CoffeeScript and SassWeb Development with CoffeeScript and Sass
Web Development with CoffeeScript and SassBrian Hogan
 
Sass: The Future of Stylesheets
Sass: The Future of StylesheetsSass: The Future of Stylesheets
Sass: The Future of Stylesheetschriseppstein
 
Responsive Design Tools & Resources
Responsive Design Tools & ResourcesResponsive Design Tools & Resources
Responsive Design Tools & ResourcesClarissa Peterson
 
[빅데이터 컨퍼런스 전희원]
[빅데이터 컨퍼런스 전희원][빅데이터 컨퍼런스 전희원]
[빅데이터 컨퍼런스 전희원]Jayoung Lim
 
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)USABLE 윤
 
Game Development With HTML5
Game Development With HTML5Game Development With HTML5
Game Development With HTML5Gil Megidish
 
워드프레스 플러그인 개발 입문
워드프레스 플러그인 개발 입문워드프레스 플러그인 개발 입문
워드프레스 플러그인 개발 입문Donghyeok Kang
 
워드프레스 운영 및 활용강좌
워드프레스 운영 및 활용강좌워드프레스 운영 및 활용강좌
워드프레스 운영 및 활용강좌@hongss
 
Mendeley 이용 매뉴얼
Mendeley 이용 매뉴얼 Mendeley 이용 매뉴얼
Mendeley 이용 매뉴얼 POSTECH Library
 

Viewers also liked (20)

Angular2 ecosystem
Angular2 ecosystemAngular2 ecosystem
Angular2 ecosystem
 
System webpack-jspm
System webpack-jspmSystem webpack-jspm
System webpack-jspm
 
Ionic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksIonic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocks
 
Compose Async with RxJS
Compose Async with RxJSCompose Async with RxJS
Compose Async with RxJS
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
 
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
 
Haml And Sass In 15 Minutes
Haml And Sass In 15 MinutesHaml And Sass In 15 Minutes
Haml And Sass In 15 Minutes
 
Compass 사용법
Compass 사용법Compass 사용법
Compass 사용법
 
Web Development with CoffeeScript and Sass
Web Development with CoffeeScript and SassWeb Development with CoffeeScript and Sass
Web Development with CoffeeScript and Sass
 
Sass: The Future of Stylesheets
Sass: The Future of StylesheetsSass: The Future of Stylesheets
Sass: The Future of Stylesheets
 
Responsive Design Tools & Resources
Responsive Design Tools & ResourcesResponsive Design Tools & Resources
Responsive Design Tools & Resources
 
[빅데이터 컨퍼런스 전희원]
[빅데이터 컨퍼런스 전희원][빅데이터 컨퍼런스 전희원]
[빅데이터 컨퍼런스 전희원]
 
Introduction to R for Data Mining
Introduction to R for Data MiningIntroduction to R for Data Mining
Introduction to R for Data Mining
 
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
 
CSS Power Tools
CSS Power ToolsCSS Power Tools
CSS Power Tools
 
Game Development With HTML5
Game Development With HTML5Game Development With HTML5
Game Development With HTML5
 
워드프레스 플러그인 개발 입문
워드프레스 플러그인 개발 입문워드프레스 플러그인 개발 입문
워드프레스 플러그인 개발 입문
 
워드프레스 운영 및 활용강좌
워드프레스 운영 및 활용강좌워드프레스 운영 및 활용강좌
워드프레스 운영 및 활용강좌
 
The SPDY Protocol
The SPDY ProtocolThe SPDY Protocol
The SPDY Protocol
 
Mendeley 이용 매뉴얼
Mendeley 이용 매뉴얼 Mendeley 이용 매뉴얼
Mendeley 이용 매뉴얼
 

Similar to 제 5회 DGMIT R&D 컨퍼런스: JavsScript Event Bubbling & Capturing

제 4회 DGMIT R&D 컨퍼런스 : 컨퍼런스 개인 프로젝트 발표
제 4회 DGMIT R&D 컨퍼런스 : 컨퍼런스 개인 프로젝트 발표제 4회 DGMIT R&D 컨퍼런스 : 컨퍼런스 개인 프로젝트 발표
제 4회 DGMIT R&D 컨퍼런스 : 컨퍼런스 개인 프로젝트 발표dgmit2009
 
이벤트 드리븐.pptx
이벤트 드리븐.pptx이벤트 드리븐.pptx
이벤트 드리븐.pptxMUUMUMUMU
 
Akka Fault Tolerance
Akka Fault ToleranceAkka Fault Tolerance
Akka Fault ToleranceHyungho Ko
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud WorkshopYongSung Yoon
 
Cep 소개 - for developers
Cep 소개 - for developersCep 소개 - for developers
Cep 소개 - for developersJuhyeon Lee
 

Similar to 제 5회 DGMIT R&D 컨퍼런스: JavsScript Event Bubbling & Capturing (6)

Hacosa j query 8th
Hacosa j query 8thHacosa j query 8th
Hacosa j query 8th
 
제 4회 DGMIT R&D 컨퍼런스 : 컨퍼런스 개인 프로젝트 발표
제 4회 DGMIT R&D 컨퍼런스 : 컨퍼런스 개인 프로젝트 발표제 4회 DGMIT R&D 컨퍼런스 : 컨퍼런스 개인 프로젝트 발표
제 4회 DGMIT R&D 컨퍼런스 : 컨퍼런스 개인 프로젝트 발표
 
이벤트 드리븐.pptx
이벤트 드리븐.pptx이벤트 드리븐.pptx
이벤트 드리븐.pptx
 
Akka Fault Tolerance
Akka Fault ToleranceAkka Fault Tolerance
Akka Fault Tolerance
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud Workshop
 
Cep 소개 - for developers
Cep 소개 - for developersCep 소개 - for developers
Cep 소개 - for developers
 

More from dgmit2009

제 6회 DGMIT UI&UX 컨퍼런스: 디자인 전문기업 성공 사례
 제 6회 DGMIT UI&UX 컨퍼런스: 디자인 전문기업 성공 사례 제 6회 DGMIT UI&UX 컨퍼런스: 디자인 전문기업 성공 사례
제 6회 DGMIT UI&UX 컨퍼런스: 디자인 전문기업 성공 사례dgmit2009
 
제 6회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스 2
 제 6회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스 2 제 6회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스 2
제 6회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스 2dgmit2009
 
제 6회 DGMIT UI&UX 컨퍼런스: 일러스트와 디자인
 제 6회 DGMIT UI&UX 컨퍼런스: 일러스트와 디자인 제 6회 DGMIT UI&UX 컨퍼런스: 일러스트와 디자인
제 6회 DGMIT UI&UX 컨퍼런스: 일러스트와 디자인dgmit2009
 
제 6회 DGMIT R&D 컨퍼런스: The Clickjacking attackXFrameOptions
제 6회 DGMIT R&D 컨퍼런스: The Clickjacking attackXFrameOptions제 6회 DGMIT R&D 컨퍼런스: The Clickjacking attackXFrameOptions
제 6회 DGMIT R&D 컨퍼런스: The Clickjacking attackXFrameOptionsdgmit2009
 
제 5회 DGMIT R&D 컨퍼런스: 생성자 방식의 상속
제 5회 DGMIT R&D 컨퍼런스: 생성자 방식의 상속제 5회 DGMIT R&D 컨퍼런스: 생성자 방식의 상속
제 5회 DGMIT R&D 컨퍼런스: 생성자 방식의 상속dgmit2009
 
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?dgmit2009
 
제 5회 DGMIT R&D 컨퍼런스: Iframe
제 5회 DGMIT R&D 컨퍼런스: Iframe제 5회 DGMIT R&D 컨퍼런스: Iframe
제 5회 DGMIT R&D 컨퍼런스: Iframedgmit2009
 
제 5회 DGMIT R&D 컨퍼런스: Facebook 연동
 제 5회 DGMIT R&D 컨퍼런스: Facebook 연동 제 5회 DGMIT R&D 컨퍼런스: Facebook 연동
제 5회 DGMIT R&D 컨퍼런스: Facebook 연동dgmit2009
 
제 5회 R&D 컨퍼런스 _양진희_20141125
제 5회 R&D 컨퍼런스 _양진희_20141125제 5회 R&D 컨퍼런스 _양진희_20141125
제 5회 R&D 컨퍼런스 _양진희_20141125dgmit2009
 
제 5회 DGMIT R&D 컨퍼런스: Sound Module With OperSLEs
제 5회 DGMIT R&D 컨퍼런스: Sound Module With OperSLEs제 5회 DGMIT R&D 컨퍼런스: Sound Module With OperSLEs
제 5회 DGMIT R&D 컨퍼런스: Sound Module With OperSLEsdgmit2009
 
제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP
 제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP 제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP
제 5회 DGMIT R&D 컨퍼런스: HTML Graphics APdgmit2009
 
제 5회 DGMIT UI&UX 컨퍼런스: 브랜드 디자인
제 5회 DGMIT UI&UX 컨퍼런스: 브랜드 디자인제 5회 DGMIT UI&UX 컨퍼런스: 브랜드 디자인
제 5회 DGMIT UI&UX 컨퍼런스: 브랜드 디자인dgmit2009
 
제 5회 DGMIT UI&UX 컨퍼런스: 2015 웹디자인 트렌드
제 5회 DGMIT UI&UX 컨퍼런스: 2015 웹디자인 트렌드제 5회 DGMIT UI&UX 컨퍼런스: 2015 웹디자인 트렌드
제 5회 DGMIT UI&UX 컨퍼런스: 2015 웹디자인 트렌드dgmit2009
 
제 5회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스
제 5회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스제 5회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스
제 5회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스dgmit2009
 
제 5회 DGMIT UI&UX 컨퍼런스: 세계최초의 UX디자이너 Walt Disney
제 5회 DGMIT UI&UX 컨퍼런스: 세계최초의 UX디자이너 Walt Disney제 5회 DGMIT UI&UX 컨퍼런스: 세계최초의 UX디자이너 Walt Disney
제 5회 DGMIT UI&UX 컨퍼런스: 세계최초의 UX디자이너 Walt Disneydgmit2009
 
제 4회 DGMIT R&D 컨퍼런스 : Making a JavaScript based Application in Mac OS X
제 4회 DGMIT R&D 컨퍼런스 : Making a JavaScript based Application in Mac OS X제 4회 DGMIT R&D 컨퍼런스 : Making a JavaScript based Application in Mac OS X
제 4회 DGMIT R&D 컨퍼런스 : Making a JavaScript based Application in Mac OS Xdgmit2009
 
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처dgmit2009
 
제 4회 DGMIT R&D 컨퍼런스 : IIFE와 QA공통항목
제 4회 DGMIT R&D 컨퍼런스 : IIFE와 QA공통항목제 4회 DGMIT R&D 컨퍼런스 : IIFE와 QA공통항목
제 4회 DGMIT R&D 컨퍼런스 : IIFE와 QA공통항목dgmit2009
 
제 4회 DGMIT R&D 컨퍼런스 : Android NDK
제 4회 DGMIT R&D 컨퍼런스 : Android NDK제 4회 DGMIT R&D 컨퍼런스 : Android NDK
제 4회 DGMIT R&D 컨퍼런스 : Android NDKdgmit2009
 
제 4회 DGMIT UI&UX 컨퍼런스 : 색의 이해
제 4회 DGMIT UI&UX 컨퍼런스 : 색의 이해제 4회 DGMIT UI&UX 컨퍼런스 : 색의 이해
제 4회 DGMIT UI&UX 컨퍼런스 : 색의 이해dgmit2009
 

More from dgmit2009 (20)

제 6회 DGMIT UI&UX 컨퍼런스: 디자인 전문기업 성공 사례
 제 6회 DGMIT UI&UX 컨퍼런스: 디자인 전문기업 성공 사례 제 6회 DGMIT UI&UX 컨퍼런스: 디자인 전문기업 성공 사례
제 6회 DGMIT UI&UX 컨퍼런스: 디자인 전문기업 성공 사례
 
제 6회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스 2
 제 6회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스 2 제 6회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스 2
제 6회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스 2
 
제 6회 DGMIT UI&UX 컨퍼런스: 일러스트와 디자인
 제 6회 DGMIT UI&UX 컨퍼런스: 일러스트와 디자인 제 6회 DGMIT UI&UX 컨퍼런스: 일러스트와 디자인
제 6회 DGMIT UI&UX 컨퍼런스: 일러스트와 디자인
 
제 6회 DGMIT R&D 컨퍼런스: The Clickjacking attackXFrameOptions
제 6회 DGMIT R&D 컨퍼런스: The Clickjacking attackXFrameOptions제 6회 DGMIT R&D 컨퍼런스: The Clickjacking attackXFrameOptions
제 6회 DGMIT R&D 컨퍼런스: The Clickjacking attackXFrameOptions
 
제 5회 DGMIT R&D 컨퍼런스: 생성자 방식의 상속
제 5회 DGMIT R&D 컨퍼런스: 생성자 방식의 상속제 5회 DGMIT R&D 컨퍼런스: 생성자 방식의 상속
제 5회 DGMIT R&D 컨퍼런스: 생성자 방식의 상속
 
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
 
제 5회 DGMIT R&D 컨퍼런스: Iframe
제 5회 DGMIT R&D 컨퍼런스: Iframe제 5회 DGMIT R&D 컨퍼런스: Iframe
제 5회 DGMIT R&D 컨퍼런스: Iframe
 
제 5회 DGMIT R&D 컨퍼런스: Facebook 연동
 제 5회 DGMIT R&D 컨퍼런스: Facebook 연동 제 5회 DGMIT R&D 컨퍼런스: Facebook 연동
제 5회 DGMIT R&D 컨퍼런스: Facebook 연동
 
제 5회 R&D 컨퍼런스 _양진희_20141125
제 5회 R&D 컨퍼런스 _양진희_20141125제 5회 R&D 컨퍼런스 _양진희_20141125
제 5회 R&D 컨퍼런스 _양진희_20141125
 
제 5회 DGMIT R&D 컨퍼런스: Sound Module With OperSLEs
제 5회 DGMIT R&D 컨퍼런스: Sound Module With OperSLEs제 5회 DGMIT R&D 컨퍼런스: Sound Module With OperSLEs
제 5회 DGMIT R&D 컨퍼런스: Sound Module With OperSLEs
 
제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP
 제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP 제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP
제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP
 
제 5회 DGMIT UI&UX 컨퍼런스: 브랜드 디자인
제 5회 DGMIT UI&UX 컨퍼런스: 브랜드 디자인제 5회 DGMIT UI&UX 컨퍼런스: 브랜드 디자인
제 5회 DGMIT UI&UX 컨퍼런스: 브랜드 디자인
 
제 5회 DGMIT UI&UX 컨퍼런스: 2015 웹디자인 트렌드
제 5회 DGMIT UI&UX 컨퍼런스: 2015 웹디자인 트렌드제 5회 DGMIT UI&UX 컨퍼런스: 2015 웹디자인 트렌드
제 5회 DGMIT UI&UX 컨퍼런스: 2015 웹디자인 트렌드
 
제 5회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스
제 5회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스제 5회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스
제 5회 DGMIT UI&UX 컨퍼런스: 2014 웨어러블 디바이스
 
제 5회 DGMIT UI&UX 컨퍼런스: 세계최초의 UX디자이너 Walt Disney
제 5회 DGMIT UI&UX 컨퍼런스: 세계최초의 UX디자이너 Walt Disney제 5회 DGMIT UI&UX 컨퍼런스: 세계최초의 UX디자이너 Walt Disney
제 5회 DGMIT UI&UX 컨퍼런스: 세계최초의 UX디자이너 Walt Disney
 
제 4회 DGMIT R&D 컨퍼런스 : Making a JavaScript based Application in Mac OS X
제 4회 DGMIT R&D 컨퍼런스 : Making a JavaScript based Application in Mac OS X제 4회 DGMIT R&D 컨퍼런스 : Making a JavaScript based Application in Mac OS X
제 4회 DGMIT R&D 컨퍼런스 : Making a JavaScript based Application in Mac OS X
 
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
 
제 4회 DGMIT R&D 컨퍼런스 : IIFE와 QA공통항목
제 4회 DGMIT R&D 컨퍼런스 : IIFE와 QA공통항목제 4회 DGMIT R&D 컨퍼런스 : IIFE와 QA공통항목
제 4회 DGMIT R&D 컨퍼런스 : IIFE와 QA공통항목
 
제 4회 DGMIT R&D 컨퍼런스 : Android NDK
제 4회 DGMIT R&D 컨퍼런스 : Android NDK제 4회 DGMIT R&D 컨퍼런스 : Android NDK
제 4회 DGMIT R&D 컨퍼런스 : Android NDK
 
제 4회 DGMIT UI&UX 컨퍼런스 : 색의 이해
제 4회 DGMIT UI&UX 컨퍼런스 : 색의 이해제 4회 DGMIT UI&UX 컨퍼런스 : 색의 이해
제 4회 DGMIT UI&UX 컨퍼런스 : 색의 이해
 

제 5회 DGMIT R&D 컨퍼런스: JavsScript Event Bubbling & Capturing

  • 1. JavaScript Event Bubbling & Capturing 2014. 11. 24 Version : 1.0.0 made by 신혜미 R&D팀
  • 2. 2 CONTENTS. 1. 들어가면서 ………… 2 2. Bubbling …………… 4 3. Capturing …………… 6 4. stopPropagation … 8 5. preventDefault … 10 6. Summary ………… 16 7. Reference ………… 19
  • 3. 3 1. 들어가면서… 10월 컨퍼런스에서 다룬 주제 •mouseover •사실은… Event type MouseEvent Supported HTML tags All HTML elements, EXCEPT: <base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>, <script>, <style>, and <title> <w3schools.com> Bubbles Yes Cancelable Yes Event Type MouseEvent Supported HTML tags All HTML elements, EXCEPT: <base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>, <script>, <style>, and <title> <w3schools.com>
  • 4. 4 1. Bubbles와 Canclelable Bubbles? Canclelable? 궁금증 Bubbles Cancelable 그것이 알고싶다!
  • 5. 5 1. 파헤쳐보기 궁금하다면! 폭풍 검색
  • 6. 6 1. 들어가면서 다시 들어가면서… Bubbles와 cancelable을 이해하기 위해 알아야 할 것들, 그리고 알게 된 것들 1)Bubbling 2)Capturing 3)event.stopPropagation 4)event.preventDefault
  • 7. 7 2. Bubbling 거품이 뽀글뽀글 •이벤트가 발생한 엘리먼트에서 부모 엘리먼트까지 이벤트 발생 •1, 2, 3번 엘리먼트에 onclick 이벤트가 바인딩 되어있다고 가정 •3번 엘리먼트에 onclick 이벤트가 발생 했을 경우 - 이벤트 발생 순서 : 3 -> 2 -> 1
  • 8. 8 2. Bubbling 거품이 뽀글뽀글 •Bubbling order - 수면에서 공기방울이 올라오는 것처럼 가장 내부의 엘리먼트에서 부모 엘리먼트까지 이벤트 발생 •예제 확인
  • 9. 9 2. Bubbling : this vs event.target 거품이 뽀글뽀글 •this : 이벤트가 발생한 엘리먼트 •event.target : 이벤트가 최초 발생한 엘리먼트 •3번 엘리먼트에 onclick 이벤트가 발생했다고 가정 •예제 확인
  • 10. 10 3. Capturing 설명 •이벤트 발생 과정 2가지 - Capturing - Bubbling •버블링과 반대 방향으로 발생 •이벤트가 처음 발생 시 가장 상위 엘리먼트에서 하위 엘리먼트로 캡쳐링이 발생
  • 11. 11 3. Capturing 캡쳐하기 •1 -> 2 -> 3의 순서로 이벤트 캡쳐링이 발생 •3 -> 2 -> 1의 순서로 이벤트 버블링이 발생
  • 12. 12 3. Capturing 캡쳐하기 •이벤트를 핸들링하는 모든 메소드들은 캡쳐링이 무시되며, 이벤트의 캡쳐링을 확인 하기 위해선 addEventListener를 사용해야 함 - 예 : elem.addEventListener( type, handler, phase ); - phase = true : handler를 캡쳐링 단계에서 동작하도록 설정 - phase = false : handler를 버블링 단계에서 동작하도록 설정 •캡쳐링 예제 확인 •캡쳐링과 버블링 예제 확인
  • 13. 13 4. event.stopPropagation 정지! •Propagation - 전파, 확산 •이벤트가 발생한 엘리먼트에서 부모 엘리먼트로 Bubbling 발생 •Bubbling을 막기위해 사용 •예 - <div onclick=“click();”></div> function click(){ event.stopPropagation(); } •참고 - IE : event.cancelBubble=true •stopPropagation 예제 확인
  • 14. 14 5. event.preventDefault 안돼. 꿈도 꿀 생각 하지마 •별도의 특정 이벤트를 막기 위해 사용 •<a> 태그 •예 - <a href=“http://www.xxxx.com” onclick=”…”></a> - a 태그를 클릭 했을 경우 두가지 이벤트 발생 1) click 이벤트 실행 2) href에 표시된 브라우저로 이동 - a 태그의 click 이벤트만 실행하고 싶을 경우 1) <a href=“#” onclick=”…”></a> 2) event.preventDefault()
  • 15. 15 5. event.preventDefault 안돼. 꿈도 꿀 생각 하지마 •a 태그의 click 이벤트만 실행하고 싶을 경우 1) <a href=“#” onclick=”…”></a> 2) event.preventDefault() •1) 의 단점 - 웹 브라우저의 페이지 상단으로 이동
  • 16. 16 5. Summary 마무리 •이벤트는 처음에 Captured down, 그리고 Bubbles up의 순서로 발생
  • 17. 17 5. Summary 마무리 •stopPropagation vs preventDefault Method stopPropagation preventDefault Description Bubbling의 전파를 막기 위해 사용 •엘리먼트의 default action을 막기 위해 사용 •Form의 Submit 버튼이나 url의 link Example event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true) event.preventDefault() Tip event.isPropagationStopped() 를 통해 stopPropagation 메소드가 호출 되었는지 확인 event.isDefaultPrevented() 를 통해 preventDefault 메소드가 호출 되었는지 확인
  • 18. 18 5. Summary 마무리 •mouseover vs mouseenter Event mouseover mouseenter click keydown Browser Support •Chrome : Yes •IE : Yes •FireFox : Yes •Safari : Yes •Opera : Yes •Chrome : 30 •IE : 5.5 •FireFox : Yes •Safari : 6.1 •Opera : 11.5 •Chrome : Yes •IE : Yes •FireFox : Yes •Safari : Yes •Opera : Yes •Chrome : Yes •IE : Yes •FireFox : Yes •Safari : Yes •Opera : Yes Bubbles Yes No Yes Yes Cancelable Yes No Yes Yes Event Type Mouse event Mouse event Mouse event Keyboard Event
  • 19. 19 6. Reference 도우미들 •http://javascript.info/ •http://mohwaproject.tistory.com/entry/dom-event-bubbling- capture%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC •http://ismydream.tistory.com/98 •http://www.w3schools.com/
  • 20. 20