Cefsharp: No permitir nueva ventana / pestaña

Creado en 13 nov. 2014  ·  6Comentarios  ·  Fuente: cefsharp/CefSharp

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 ^ _ ^

faq-able!

Comentario más útil

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
    }

Todos 6 comentarios

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
        }
    }
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

SimonTheCat picture SimonTheCat  ·  3Comentarios

amaitland picture amaitland  ·  3Comentarios

naster01 picture naster01  ·  3Comentarios

amaitland picture amaitland  ·  4Comentarios

DonetCracker picture DonetCracker  ·  4Comentarios