马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 KenTien 于 2025-3-11 08:27 编辑
1、应用场景:当我们对网页执行JS代码时,一般用到CefRefPtr<CefFrame> pFrame = browser->GetMainFrame();
但是一个网页也许会有很多个子框架,如果要在子框架执行JS代码就要遍历,所以很不方便。故有以下解决方案。
[JavaScript] 查看源码 复制代码 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
}
}
}
|