Hola, estaba buscando en cualquier lugar e intenté todo lo que pude, pero parece que no puedo deshabilitar o no permitir la creación de una nueva ventana (o pestaña).
Como cuando hago clic en el botón central del mouse, o shift + Enter en formularios, etc.
Me gusta no permitir eso, porque mi aplicación solo debería tener una vista IWebBrowser.
¡CefSharp es genial! Me encanta ^ _ ^
Puede intentar implementar ILifeSpanHandler y volver a cargar la URL pendiente en la instancia actual del navegador
public virtual bool OnBeforePopup(IWebBrowser browser, string url, ref int x, ref int y, ref int width, ref int height)
{
// Preserve new windows to be opened and load all popup urls in the same browser view
browser.Load(url);
//
return true;
}
public virtual void OnBeforeClose(IWebBrowser browser)
{
// DO NOTHING
}
¡Gracias! @dviz
: smile :: + 1: ¡Gracias @dviz!
He inventado una nueva etiqueta de emisión y la # 600 es la primera en la que le ponemos esa ...
El método OnBeforePopup
puede haber cambiado, el concepto básico debería seguir siendo el mismo.
Hola, Alex,
public virtual bool OnBeforePopup (navegador IWebBrowser, string url, ref int x, ref int y, ref int width, ref int height)
{
// Conservar las nuevas ventanas para que se abran y cargar todas las URL emergentes en la misma vista del navegador
browser.Load (url);
//
devuelve verdadero;
}
public virtual void OnBeforeClose(IWebBrowser browser)
{
// DO NOTHING
}
esta solución no funciona en la versión 57
Nuevo que funciona con la versión actual estable de nuget 57
public class BrowserLifeSpanHandler : ILifeSpanHandler
{
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)
{
newBrowser = null;
return true;
}
public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
{
//
}
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
{
return false;
}
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
{
//nothing
}
}
Comentario más útil
Puede intentar implementar ILifeSpanHandler y volver a cargar la URL pendiente en la instancia actual del navegador