C# 如何处理屏幕外的弹出链接
我编写了一个控制台应用程序,它使用CEF屏幕外渲染模式,并提供自己的窗口,其中显示从CEF渲染引擎返回的图像。 我设法让子窗口打开(和关闭),但对于具有“与AccelAero连接”功能的站点,我有一个问题,例如。 在此类网站中,会弹出一个新窗口,允许用户输入其FB凭据。然后弹出窗口关闭,网站允许您进入。 在我的实现中,弹出窗口确实会出现,但一旦获得批准,它将保持打开状态,没有任何内容(使用开发工具测试表明它不再连接),并且在父窗口中不会发生任何事情C# 如何处理屏幕外的弹出链接,c#,console-application,cefsharp,C#,Console Application,Cefsharp,我编写了一个控制台应用程序,它使用CEF屏幕外渲染模式,并提供自己的窗口,其中显示从CEF渲染引擎返回的图像。 我设法让子窗口打开(和关闭),但对于具有“与AccelAero连接”功能的站点,我有一个问题,例如。 在此类网站中,会弹出一个新窗口,允许用户输入其FB凭据。然后弹出窗口关闭,网站允许您进入。 在我的实现中,弹出窗口确实会出现,但一旦获得批准,它将保持打开状态,没有任何内容(使用开发工具测试表明它不再连接),并且在父窗口中不会发生任何事情 public class LifeSpanHa
public class LifeSpanHandler : ILifeSpanHandler
{
public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
{
}
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
{
return false;
}
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
{
}
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
//var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
//var windowX = (windowInfo.X == int.MinValue) ? double.NaN : windowInfo.X;
//var windowY = (windowInfo.Y == int.MinValue) ? double.NaN : windowInfo.Y;
//var windowWidth = (windowInfo.Width == int.MinValue) ? double.NaN : windowInfo.Width;
//var windowHeight = (windowInfo.Height == int.MinValue) ? double.NaN : windowInfo.Height;
ChromiumWebBrowser chromiumBrowser = null;
/*
it is a website which have a scripts that start a new popup
on its first page and when I want to grab the handler of the
popup window in a new page the scripts of the page understand
this and reopen a new popup window which I want to grab its
handler too.
*/
chromiumBrowser = new ChromiumWebBrowser(targetUrl);
chromiumBrowser.SetAsPopup();
chromiumBrowser.LifeSpanHandler = this;
newBrowser = chromiumBrowser;
return true; //Infinite loop
}
}
电话:
browser = new ChromiumWebBrowser("http://reservations.daallo.com/xbe/public/showLogin.action");
browser.LifeSpanHandler = new LifeSpanHandler();
您的
ILifeSpanHandler
的实现是什么样子的?@amaitland我实现了ILifeSpanHandler,但我无法将新窗口弹出窗口处理为屏幕外。如果没有演示您的问题的代码,任何人都不可能帮助您。@amaitland添加ILifespanHandler的实现可能没有人尝试使用自己的ChromiumWebBrowser
实例创建弹出窗口。您可能需要调试和代码更改才能使其工作。首先,在创建新的ChromiumWebBrowser
实例时,不要创建底层浏览器。