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]

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

/// <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!