CEF 3屏幕外渲染和页面源

时间:2014-07-26 16:08:54

标签: c++ chromium chromium-embedded

今天我正在使用Chromium Embedded Framework 3.

我已经设置,编译和执行了所有内容。一切正常。

现在我想在呈现所有内容并执行JavaScript之后阅读页面源代码。 我还希望从屏幕外渲染中获取缓冲区。

我的基本应用程序结构是:

App实现CefApp,CefBrowserProcessHandler和CefRenderProcessHandler

Handler实现了CefClient,CefDisplayHandler,CefLifeSpanHandler,CefLoadHandler和CefRenderHandler

访客实施CefStringVisitor

在App :: OnContextInitialized()中我正在执行

  

CreateBrowser(window_info,handler.get(),“http://www.google.com/”,   browser_settings,NULL);

,而

  

window_info.SetAsWindowless(NULL,true);

现在是App :: OnContextCreated()只有在我用

单模式运行CEF3时才被调用
  

main_settings.single_process = true;

否则它从未被调用过。在App :: OnContextCreated()中我正在做

  

browser-> GetMainFrame() - > GetSource(new Visitor());

获取页面源并且它可以工作,但是该方法被多次调用,并且此时似乎不执行JavaScript。

我现在的问题是,在呈现所有内容并执行JavaScript后,阅读页面源的最佳点是什么?

Handler :: GetViewRect()也不会调用Handler :: OnPaint()。

问候

Norwido

1 个答案:

答案 0 :(得分:1)

OnContextCreated在Renderer进程中运行,这可能是它仅在单进程模式下工作的原因。您应该在浏览器进程中运行的CefLoadHandler :: OnLoadEnd或OnLoadingStateChange中调用GetSource。

未在CefRenderHandler中实现所有必要的回调可能是未调用OnPaint回调的原因。阅读标题文件中的文档注释。