Webkit技术译文系列(一):WebCore中的主要对象

原文链接 http://webkit.org/coding/major-objects.html

WebCore使用许多对象来表示内存中的web页面,本文描述了其中的一些主要对象以及它们之间的关系。在某些情况下,对象之间的连接会断开,导致空指针引用。因此在遍历这些指针时,代码必须仔细的考虑”分离”(detached)的情形,并优雅的处理空指针。

 +---------+
 | Chrome  |
 +----+----+
      |
  +---+---+     +----------+
  | Page  +---->| Settings |
  +---+---+     +----------+
      |
      +-------------------------- ... other Frame objects
      |
  +---+---+   +-------------+                 +-------------------+
  | Frame +---+ FrameLoader +                 | JSDOMWindowShell  |
  +---+---+   +-------------+                 +---------+---------+
     /                                                 |
    /         /  Re-used after navigation   /        |
.../....|...............................................|..........
  /     |      /  Replaced after navigation  /        |
 /      |                                               |
/<------|<-- Ptrs to Frame are null after navigation[1] |
|       |                                               |
| +-----+-----+         +-------------+                 |
| | DOMWindow |<--impl--+ JSDOMWindow |<------window----+
| +-----+-----+         +-------------+
|       |
|       |<-- Can be null for Documents created by XMLHttpRequest
|       |
| +-----+-----+         +-------------+
+-+ Document  |<--impl--+ JSDocument  |
  +-----+-----+         +-------------+
        |
        |<-- Can be null for DocumentType objects
        |
    +---+---+           +--------+
    | Node  |<---impl---| JSNode |
    +-------+           +--------+

[1] 导航到一个新的页面后,老的DomWindow和Document指向一个空的Frame,而Frame指向一个新的DomWindow和Document.

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>