KenTien 发表于 2025-2-14 08:27:24

CEF3专辑-进阶篇-05-URL加载到主框架

本帖最后由 KenTien 于 2025-3-11 08:27 编辑

1、应用场景:当我们对网页执行JS代码时,一般用到CefRefPtr<CefFrame> pFrame = browser->GetMainFrame();
但是一个网页也许会有很多个子框架,如果要在子框架执行JS代码就要遍历,所以很不方便。故有以下解决方案。

class ClientHandler : public CefClient,
                      public CefDisplayHandler,
                      public CefLifeSpanHandler,
                      public CefLoadHandler, //这里实现
                      public CefJSDialogHandler ,
                      public CefKeyboardHandler {
// CefClient methods:
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() override { return this; }
// CefLoadHandler methods:
virtual void OnLoadEnd(CefRefPtr< CefBrowser > browser, CefRefPtr< CefFrame > frame, int         httpStatusCode
) override;
void SimpleHandler::OnLoadEnd(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, int httpStatusCode)
{
      CefString url = frame->GetURL();
      if (url.ToString().find("rk.sszt.app.9125flying.com") != std::string::npos && url.ToString().find(".php?") != std::string::npos)
      {
      if (!hasLoadedGameURL)
      {
            browser->GetMainFrame()->LoadURL(url);
            hasLoadedGameURL = true;// bool 类型,在构造函数,列表初始化。 false
      }
      }
}                                                            




ensurf 发表于 2025-2-14 20:02:22

这样都可以,学习了
页: [1]
查看完整版本: CEF3专辑-进阶篇-05-URL加载到主框架