Feedback

C# - Xamarin Forms: WebView mit Navigation in den Browser

Veröffentlicht von am 10.03.2016
(0 Bewertungen)
Wenn man ein WebView in seine App einbindet, besteht die Gefahr dass dieses durch einen Link auf eine Seite navigiert zu der man eigentlich nicht möchte.
Diese Ableitung des Controls ermöglicht auf einfache Art- und Weiße das ausschließliche Navigieren auf bestimmten Seiten. Welche das sind, kann man mit einem Regex bestimmen.

Benötigte Namespaces
System
System.Text.RegularExpressions
Xamarin.Forms

Tipp: Um den Regex im XAML zu definieren empfehle ich folgendes Snippet:
http://dotnet-snippets.de/snippet/xamarin-forms-regex-im-markup-erstellen/14122
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

/// <summary>
/// Stellt ein <see cref="WebView"/>-Element dar, welches den Standard-Browser öffnet, sobald zu einer URL navigiert werden soll die einem regulären Ausdruck nicht entspricht.
/// </summary>
public class NoExternWebView : WebView
{
    /// <summary>
    /// Erstellt eine neue Instanz der <see cref="NoExternWebView"/>-Klasse.
    /// </summary>
    public NoExternWebView()
    {
        this.Navigating += this.OnWebViewNavigating;
    }

    /// <summary>
    /// Bezeichnet die <see cref="AllowedUrlRegex"/>-Abhängigkeitseigenschaft.
    /// </summary>
    public static readonly BindableProperty AllowedUrlRegexProperty = BindableProperty.Create<NoExternWebView, Regex>(p => p.AllowedUrlRegex, null);

    /// <summary>
    /// Ruft den regulären Ausdruck für die URL-Prüfung ab oder legt diesen fest.
    /// </summary>
    public Regex AllowedUrlRegex
    {
        get { return (Regex)this.GetValue(AllowedUrlRegexProperty); }
        set { this.SetValue(AllowedUrlRegexProperty, value); }
    }

    private void OnWebViewNavigating(object sender, WebNavigatingEventArgs e)
    {
        if (e.Url == null
            || this.AllowedUrlRegex == null
            || this.AllowedUrlRegex.Match(e.Url).Success) return;

        Device.OpenUri(new Uri(e.Url));

        e.Cancel = true;
    }
}
Abgelegt unter XamarinForms, Regex, WebView, Browser, Navigate, Url, , Xamarin.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!