今天,我正在使用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/