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]

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

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