此问题的解决方案从 https://groups.google.com/forum/#!topic/delphichromiumembedded/xzshOr-pjnU 获得。
procedure TBrowser.ChromiumBrowserBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; var popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; out Result: Boolean); begin if targetUrl = 'about:blank' then begin Result := false end else begin //ChromiumBrowser.Load(targetUrl); PopupUrl := targetUrl; SendMessage(Self.Handle, WM_COMMAND, $EF3A, 0); Result := true; end; end;
声明一个事件用于接收消息。
procedure CatchPopup(var msg: TMessage); message WM_COMMAND;
procedure TBrowser.CatchPopup(var msg: TMessage); begin if Msg.Msg = WM_COMMAND then begin if Msg.WParam = $EF3A then begin Framework.CreateTab(2, PopupUrl); end; end; end;