4

渲染后尝试访问页面的 DOM。我不需要查看页面并计划在没有任何 GUI 或交互的情况下以编程方式应用它。

我对后期渲染感兴趣的原因是我想知道对象出现在哪里。一些位置信息在 HTML 中编码(例如,通过 offsetLeft),但很多不是。此外,Javascript 可以改变最终的定位。我想要尽可能接近用户看到的位置。

我查看了 Chromium 代码并认为有办法做到这一点,但没有足够的文档来开始。

简单地说,我会对这样的伪代码感兴趣

DOMRoot *r = new Page("http://stackoverflow.com")->getDom();

关于起点的任何提示?

4

1 回答 1

5

您应该使用 Chromium 公开的 Web API 包装器;具体来说,WebDocument类包含您需要的功能。你可以这样称呼它:

WebFrame * mainFrame = webView->mainFrame();
WebDocument document = mainFrame->document();
WebElement docElement = document->docElement();

// Manipulate the DOM here using docElement
...

您可以在此处浏览 Chromium 的 Web API 包装器的源代码。 虽然文档的方式不多,但头文件的注释相当不错,您可以浏览 Chrome 的源代码以查看 API 的实际运行情况。

开始使用 Chromium 很困难。我建议查看test_shell 应用程序。此外,像Chromium Embedded Framework (CEF) 这样的框架简化了在应用程序中嵌入 Chromium 的过程;我在当前项目中使用 CEF,对此我非常满意。

于 2010-07-19T01:04:30.097 回答