Cefsharp: Neues Fenster/Tab nicht zulassen

Erstellt am 13. Nov. 2014  ·  6Kommentare  ·  Quelle: cefsharp/CefSharp

Hallo, ich habe überall gesucht und alles versucht, was ich kann, aber ich kann das Erstellen eines neuen Fensters (oder einer Registerkarte) nicht deaktivieren oder verbieten.
Zum Beispiel, wenn ich mit der mittleren Maustaste klicke oder in Formularen Umschalt+Eingabetaste usw.
Das verbiete ich gerne, da meine App nur eine IWebBrowser-Ansicht haben soll.

CefSharp ist großartig! Ich liebe es ^_^

faq-able!

Hilfreichster Kommentar

Sie können versuchen, ILifeSpanHandler zu implementieren und die ausstehende URL in die aktuelle Browserinstanz neu zu laden

    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
    }

Alle 6 Kommentare

Sie können versuchen, ILifeSpanHandler zu implementieren und die ausstehende URL in die aktuelle Browserinstanz neu zu laden

    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
    }

Danke! @dviz

:smile::+1: Danke @dviz!
Ich habe ein neues Heft-Etikett erfunden und #600 ist das erste, auf das wir es setzen ...

Die Methode OnBeforePopup kann sich geändert haben, das Grundkonzept sollte immer noch das gleiche sein.

Hallo Alex,

public virtual bool OnBeforePopup(IWebBrowser browser, string url, ref int x, ref int y, ref int width, ref int height)
{
// Neue zu öffnende Fenster beibehalten und alle Popup-URLs in derselben Browseransicht laden
browser.Load(URL);
//
true zurückgeben;
}

public virtual void OnBeforeClose(IWebBrowser browser)
{
    // DO NOTHING
}

diese Lösung funktioniert nicht in Version 57

Neues, das mit der aktuellen stabilen Nuget-Version 57 funktioniert

    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
        }
    }
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen