今天我正在使用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
答案 0 :(得分:1)
OnContextCreated在Renderer进程中运行,这可能是它仅在单进程模式下工作的原因。您应该在浏览器进程中运行的CefLoadHandler :: OnLoadEnd或OnLoadingStateChange中调用GetSource。
未在CefRenderHandler中实现所有必要的回调可能是未调用OnPaint回调的原因。阅读标题文件中的文档注释。