ChromiumWebBrowser
有一個LifeSpanHandler
屬性。要手動控制Cefsharp中的彈出窗口,您必須實現您自己的使用ILifeSpanHandle
接口的生命週期處理程序對象。
每次瀏覽器想要打開一個新窗口時,它都會調用您的生存期處理程序的OnBeforePopup
函數。在這裏你可以實現你想要的行爲。如果您返回false
,瀏覽器將彈出一個新窗口。如果您返回true
,瀏覽器將忽略彈出操作,但您可以手動創建新窗口,新選項卡等...
這是一個非常簡單的自定義生命跨度手柄示例。在彈出請求時,它會觸發一個名爲PopupRequest的事件。您可以訂閱此類事件並手動創建新窗口/選項卡。然後,它返回true,指示ChromiumWebBrowser
不創建它自己的新窗口。但是,您需要自行創建另一個ChromiumWebBrowser
的新窗口。
public class SampleLifeSpanHandler: ILifeSpanHandler
{
public event Action<string> PopupRequest;
public bool OnBeforePopup(IWebBrowser browser, string sourceUrl, string targetUrl, ref int x, ref int y, ref int width,
ref int height)
{
if (PopupRequest != null)
PopupRequest(targetUrl);
return true;
}
public void OnBeforeClose(IWebBrowser browser)
{
}
}
哦,非常感謝。你是個好人 –