今天,我正在使用Chromium Embedded Framework 3。

我已完成所有设置,编译和执行。一切正常。

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

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

应用程序实现CefApp,CefBrowserProcessHandler和CefRenderProcessHandler

处理程序实现CefClient,CefDisplayHandler,CefLifeSpanHandler,CefLoadHandler和CefRenderHandler

访客实现CefStringVisitor

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







现在仅当我以以下方式在单模式下运行CEF3时才调用App::OnContextCreated()



否则它永远不会被调用。在App::OnContextCreated()中即时通讯



来获取页面源代码并且可以正常工作,但是该方法已被多次调用,并且目前似乎不执行JavaScript。

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

此外,从不调用Handler::OnPaint()而调用Handler::GetViewRect()。

问候

诺维多

最佳答案

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

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

关于c++ - CEF 3屏幕外渲染和页面源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24972921/

10-13 02:43