DOM2 Events Spec 요약

Dev 2009.05.19 14:29
W3C의 DOM2 Events Spec을 다음과 같이 요약한다.
http://www.w3.org/TR/DOM-Level-2-Events/


1.1. Overview of the DOM Level2 Event Model
1.1.1. 용어
UI events
user interface event. 마우스, 키보드 등을 통해 사용자가 발생시키는 이벤트

UI Logical events
focus change 또는 element triggering 같은 장치와 무관한 이벤트

Mutation events
DOM 내용이 바뀔 때 발생하는 이벤트

Capturing
event가 event-target에서 처리되기 전에 event-target의 ancestor 들에서 먼저 처리되는 것

Bubbling
event가 event-target에서 처리된 다음 ancestor들로 전파되는 것


1.2. Description of event flow
1.2.1. Basic event flow
event-listener 처리중에 exception이 발생하더라도 evcent는 계속 전파된다.

1.2.2. Event capture
capture는 top node (Document node)에서부터 target node까지 전파된다.
Event::stopPropagation() 메소드로 capturing을 중지시킬 수 있다. 단, stopPropagation()이 호출된 level의 event-listener 들은 모두 호출된다.

1.2.3. Event bubbling
capturer로 등록된 event-listener 들은 bubbling phase에서는 호출되지 않는다.
Event::stopPropagation() 메소드로 bubbling을 중지시킬 수 있다. 단, stopPropagation()이 호출된 level의 event-listener 들은 모두 호출된다.

1.2.4. Event cancelation
cancelable한 event는 Event::preventDefault() 메소드를 호출해서 implementation의 default 동작을 취소 시킬 수 있다. 즉, hyper-link를 클릭해도 해당 link로 이동하지 않게 만들 수 있다.


1.3. Event listener registration
1.3.1. Event registration interfaces
EventTarget::dispatchEvent() 메소드로 이벤트를 직접 전달할 수 있다.
EventTarget::dispatchEvent() 메소드로 이벤트를 fire 시켜도 capturing과 bubbling이 동일하게 발생한다.


(끝)
Posted by ingee

댓글을 달아 주세요

WebKit 화면 구성 요소

Dev 2009.05.15 15:02

본 기사는 2008년 12월 버전 (rev. 39476) WebKit win32 port를 기준으로 한다.

http://webkit.org에 존재하는 “WebKit Objective-C Programming Guide” 문서를 보면 다음과 같은 그림이 존재한다.



이 그림에서 aWebFrameView는 폐기됐다 (적어도 windows port에서는…). 지금 현실에 맞게 그림을 재구성하면 다음과 같다.


  • WebView는 WebKit 엔진을 담고 있는 main-window를 나타내는 개념이다.
  • WebFrame은 WebKit이 표시하는 페이지를 나타내는 개념이다.
    • WebView는 1개의 WebFrame을 main-frame 멤버로 갖는다.
    • WebFrame은 0개 또는 여러 개의 WebFrame을 children 멤버로 가질 수 있다 (HTML & 태그 처리…).


화면 구성 요소들에 대한 클래스 다이어그램은 다음과 같다.



언제나처럼 이미지를 클릭하면 원본 크기로 볼 수 있다.

 

Posted by ingee

댓글을 달아 주세요

  1. 2009.07.15 01:15  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. seungzzang 2010.03.03 14:35 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 자료 감사합니다. 이제 막 webkit에 대해서 알아가는 중인데, 많은 도움이 되고 있습니다. 감사합니다. ^^

  3. seungzzang 2010.03.06 14:56 신고  댓글주소  수정/삭제  댓글쓰기

    아... 죄송해요. 실수했네요. ingee님. 좋은 하루되세요 ^^

  4. seungzzang 2010.03.06 14:57 신고  댓글주소  수정/삭제  댓글쓰기

    궁금한게 있는데요. ingee님은 webkit 소스를 수정할때, 어떤 에디터를 사용하나요? Eclipse? SourceInsight? VC2005? 어떤 에디터가 소스를 보기 편한지가 궁금하네요. ^^

  5. happyshan 2010.03.24 17:57 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다.
    본문 중 “WebKit Objective-C Programming Guide” 문서는 어디에 있는건가요?
    이외에도 webkit을 이용할 수 있는 programming guide를 찾고 있는데, webkit.org 어디에 있는지 못찾겠네요.

    • ingee 2010.03.25 17:57 신고  댓글주소  수정/삭제

      에이, 너무하시네... 구글링만 해도 나오던데... ^^;;
      농담입니다. 뭐라도 도움줄 수 있어 기쁩니다. 자주 들러 주세요.
      http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/DisplayWebContent/DisplayWebContent.html 입니다.

    • happyshan 2010.03.25 19:13 신고  댓글주소  수정/삭제

      어. 그렇군요. -.-a
      webkit.org site에서 검색했더니 안나오길래...
      어제는 제 손이 삐었나봅니다. ^^

      감사합니다.
      (o.o) (_ _) (o.o)

    • ingee 2010.03.25 22:36 신고  댓글주소  수정/삭제

      webkit.org 메뉴 구성이 좀 난잡합니다. 저도 이런저런 문서를 기억하고 찾으려하다 못찾고 애먹는 경우가 많습니다. 어려움 겪으신것 충분히 이해합니다. 좋은 작업 결과 만드시기 바랍니다.

  6. lisa 2012.07.12 22:25 신고  댓글주소  수정/삭제  댓글쓰기

    1개월차 신입사원입니다.
    웹킷공부하는데 뭐가뭔지하나도모르겠네요 ㅠㅠ
    그래도 많은 도움 받고 갑니다 ㅠㅠ....
    함수나 클래스가 무슨일을 하는지 해석하는것도 안되는 이런 사회초년생 ㅠㅠ
    앞으로자주들리겠습니다 ㅋㅋ
    댓글좋아하신다고하셔서 머리도터질거같고 해서 남기고가요^^

이전 기사에서 사용자가 URL을 입력했을 때, WebKit이 해당 페이지를 load 하는 시퀀스를 분석했었다. 이번에는 페이지가 load되어 있는 상태에서 사용자가 웹페이지의 HTML Anchor를 클릭했을 때 WebKit이 새로운 페이지를 load 하는 시퀀스를 정리한다. 서론이 다소 길었다. 사실 다음 시퀀스 다이어그램이 전부다. FrameLoader::loadWithDocumentLoader() 이후의 시퀀스는 이전 기사의 FrameLoader::load(docLoader) 호출 이후의 시퀀스와 동일하다.



이미지를 클릭하면 원본 크기로 볼 수 있다.
Posted by ingee

댓글을 달아 주세요

  1. 의정 2009.07.10 17:28 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 궁금한게 있어서 왔어요^^ webkit을 빌드해서 보드에 올렸습니다. 브라우저는그냥
    기본 브라우저인 Gtklauncher를 사용합니다.

    실행하면 구글이 나오는데 이때 마우스로 이것저것 클릭하면 잘 이동합니다. 피카사, 유투브등등 페이지 이동이 잘됩니다.

    검색창에 뭔가 넣어서 검색하고 검색된 결과를 마우스로 클릭하면 꿈쩍도 하지 않습니다.
    그러나 그 화면에서 검색결과가 아닌 다른걸 눌러보면 페이지 이동이 잘됩니다.

    유독 검색결과만 클릭해도 이동이 안되요...왜 그런거죠?
    특별히 더 작업해줘야하거나, 소스를 수정해야하나요?

    소스를 수정한다면 webkit쪽인지, 아니면 기본브라우저인 Gtklauncher를 수정해야하는지
    당췌 감이 안옵니다.

    조금의 힌트도 큰힘이 될꺼예요. 그럼 복많이 받으세요

    • zeodtr 2009.08.17 16:41 신고  댓글주소  수정/삭제

      GtkLauncher에는 새 창을 띄우는 event가 구현되어 있지 않아서 그런 것 아닐까요? WinLauncher도 마찬가지인 것 같더군요.
      대신 해당 URL을 복사한 뒤 다시 주소창에 넣어주면 잘 될 거예요.

    • ingee 2009.08.18 13:39 신고  댓글주소  수정/삭제

      아우... 죄송합니다. 님의 글을 미처 못봤습니다. 답변주신 zeo님 고맙습니다. zeo님의 답이 맞다고 생각합니다.