编程技术记录

世界你好!

本次着手实现将 target="_blank"的行为修改为 target="_self"

CEF3提供了UI窗口生命周期接口CefLifeSpanHandler,借助这个接口来监听新窗口创建事件,并在创建前取消窗口创建,使用已有窗口来加载新链接。

class CefLifeSpanHandler : public virtual CefBaseRefCounted {
 public:
  ///由UI线程调用,调用时机是新浏览窗口创建前。
  // frame 弹出新窗口链接的源frame(即从哪个frame里的链接弹出新窗口)
  // target_url 目的链接
  // target_frame_name 目的frame名字
  // 返回true,则表示要取消窗口创建
  virtual bool OnBeforePopup(CefRefPtr browser,
                             CefRefPtr frame,
                             const CefString& target_url,
                             const CefString& target_frame_name,
                             WindowOpenDisposition target_disposition,
                             bool user_gesture,
                             const CefPopupFeatures& popupFeatures,
                             CefWindowInfo& windowInfo,
                             CefRefPtr& client,
                             CefBrowserSettings& settings,
                             CefRefPtr& extra_info,
                             bool* no_javascript_access) 
{
    frame->LoadURL(target_url); //在当前frame中加载链接
    return true; //返回true,取消窗口创建
}

© Beli. All Rights Reserved.