看看以下代表 Chromium 如何显示网页的概念应用层:
图片来源: https ://docs.google.com/drawings/d/1gdSTfvLxbJDbX8oiWo5LTwAmXmdMQvjoUhYEhfhj0-k/edit
不同的层描述为:
- WebKit:在 Safari、Chromium 和所有其他基于 WebKit 的浏览器之间共享的渲染引擎。Port是 WebKit的一部分,它与平台相关的系统服务(如资源加载和图形)集成。
- Glue:将 WebKit 类型转换为 Chromium 类型。这是我们的“WebKit 嵌入层”。它是两个浏览器 Chromium 和 test_shell(它允许我们测试 WebKit)的基础。
- 渲染器/渲染主机:这是 Chromium 的“多进程嵌入层”。它代理跨进程边界的通知和命令。
- WebContents:一个可重用的组件,是 Content 模块的主类。它很容易嵌入以允许将 HTML 多进程渲染到视图中。有关更多信息,请参阅内容模块页面。
- Browser:代表浏览器窗口,它包含多个WebContentses。
- Tab Helpers:可以附加到 WebContents 的单个对象(通过 WebContentsUserData mixin)。浏览器将它们的分类附加到它所拥有的 WebContentses(一个用于网站图标,一个用于信息栏等)。
由于您的目标是按元素和/或类访问和解释网页的 HTML 内容,因此您可以查看使用 Blink的呈现过程:
渲染器使用Blink开源布局引擎来解释和布局 HTML。
Blink 有一个WebDocument
类允许您访问网页的 HTML 内容和其他属性:
WebDocument document = GetMainFrame()->GetDocument();
WebElement element = document.GetElementById(WebString::FromUTF8("example"));
// document.Url();