JavaScript 在本窗口打开网页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 CEF3 中的 `CefBrowserHost::CreateBrowser` 方法来在同一窗口打开新的网页。具体来说,您需要在您的应用程序中实现 `CefLifeSpanHandler` 接口,并重写其 `OnBeforePopup` 方法。在该方法中,您可以拦截新的弹出窗口,并使用 `CefBrowserHost::CreateBrowser` 方法在同一窗口打开网页。下面是一个示例代码片段: ```cpp class MyLifeSpanHandler : public CefLifeSpanHandler { public: CefRefPtr<CefBrowser> CreateBrowser( CefRefPtr<CefWindowInfo> window_info, CefRefPtr<CefClient> client, const CefString& url, const CefBrowserSettings& settings, CefRefPtr<CefDictionaryValue> extra_info, CefRefPtr<CefBrowserContext> browser_context) override { // 在同一窗口中创建新的浏览器 CefRefPtr<CefBrowser> browser = CefBrowserHost::CreateBrowserSync( window_info, client, url, settings, extra_info, browser_context); return browser; } bool OnBeforePopup( CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const CefString& target_url, const CefString& target_frame_name, CefLifeSpanHandler::WindowOpenDisposition target_disposition, bool user_gesture, const CefPopupFeatures& popupFeatures, CefWindowInfo& windowInfo, CefRefPtr<CefClient>& client, CefBrowserSettings& settings, CefRefPtr<CefDictionaryValue>& extra_info, bool* no_javascript_access) override { // 拦截新的弹出窗口 // 使用 CreateBrowser 在同一窗口打开网页 CefRefPtr<CefBrowser> new_browser = CefBrowserHost::CreateBrowserSync( windowInfo, client, target_url, settings, extra_info, browser->GetBrowserContext()); return true; } IMPLEMENT_REFCOUNTING(MyLifeSpanHandler); }; ``` 然后,您需要在创建 `CefBrowser` 对象时将 `MyLifeSpanHandler` 对象传递给 `CefBrowserSettings` 对象的 `lifespan_handler` 成员。例如: ```cpp CefRefPtr<CefBrowser> browser = CefBrowserHost::CreateBrowserSync( window_info, client, url, settings, extra_info, browser_context); CefRefPtr<MyLifeSpanHandler> lifespan_handler = new MyLifeSpanHandler(); CefRefPtr<CefBrowserSettings> browser_settings = browser->GetHost()->GetBrowserSettings(); browser_settings->lifespan_handler = lifespan_handler; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值