Zoeken…


Opmerkingen

Alle voorbeelden die gegevens van een externe URL ophalen, moeten de mogelijkheid "Internet (client)" hebben aangevinkt in het Package.appxmanifest. Voor voorbeelden die alleen lokale gegevens manipuleren, is dit niet nodig.

Deze code navigeert eenvoudigweg WebView naar een aantal Uri:

this.webView.Navigate(new Uri("http://stackoverflow.com/"));

of

this.webView.Source = new Uri("http://stackoverflow.com/");

Stel een aangepaste user-agent in en ga naar Uri:

var userAgent = "my custom user agent";
var uri = new Uri("http://useragentstring.com/");
var requestMessage = new HttpRequestMessage(HttpMethod.Get, uri);
requestMessage.Headers.Add("User-Agent", userAgent);

this.webView.NavigateWithHttpRequestMessage(requestMessage);

Toon gespecificeerde HTML-string in WebView:

var htmlString = 
    @"<!DOCTYPE html>
      <html>
          <head><title>HTML document</title></head>
          <body>
              <p>This is simple HTML content.</p>
          </body>
      </html>";

this.webView.NavigateToString(htmlString);

Open HTML-bestand van app-pakket

U kunt eenvoudig een bestand vanuit uw app-pakket openen, maar het Uri-schema moet "ms-appx-web" zijn in plaats van "ms-appx":

var uri = new Uri("ms-appx-web:///Assets/Html/html-sample.html");
this.webView.Navigate(uri);

Open HTML-bestand vanuit app lokale map of tijdelijke map

Als u een bestand uit de lokale map of tijdelijke map wilt openen, mag het doelbestand zich niet in de hoofdmap van die mappen bevinden. Om veiligheidsredenen, om te voorkomen dat andere inhoud wordt weergegeven door WebView, moet het bestand dat wordt weergegeven, zich in een submap bevinden:

var uri = new Uri("ms-appdata:///local/html/html-sample.html");
this.webView.Navigate(uri);

In het geval dat NavigateToString sommige inhoud niet aankan, gebruik dan de methode NavigateToLocalStreamUri. Het zal elke lokaal gerefereerde URI binnen de HTML-pagina dwingen om de speciale resolverklasse aan te roepen, die meteen de juiste inhoud kan bieden.

Activa / Html / html-sample.html bestand:

<!DOCTYPE html>
<html>
    <head>
        <title>HTML document</title>
    </head>
    <body>
        <p>This is simple HTML content.</p>
        <img src="cat.jpg"/>
    </body>
</html>

Code:

protected override void OnNavigatedTo(NavigationEventArgs args)
{
    // The Uri resolver takes is in the form of "ms-local-stream://appname_KEY/folder/file"
    // For simplicity, there is method BuildLocalStreamUri which returns correct Uri.
    var uri = this.webView.BuildLocalStreamUri("SomeTag", "/html-sample.html");
    var resolver = new StreamUriResolver();
    this.webView.NavigateToLocalStreamUri(uri, resolver);

    base.OnNavigatedTo(args);
}


public sealed class StreamUriResolver : IUriToStreamResolver
{
    public IAsyncOperation<IInputStream> UriToStreamAsync(Uri uri)
    {
        if (uri == null)
        {
            throw new ArgumentNullException(nameof(uri));
        }

        var path = uri.AbsolutePath;

        return GetContent(path).AsAsyncOperation();
    }


    private async Task<IInputStream> GetContent(string uriPath)
    {
        Uri localUri;

        if (Path.GetExtension(uriPath).Equals(".html"))
        {
            localUri = new Uri("ms-appx:///Assets/Html" + uriPath);
        }
        else
        {
            localUri = new Uri("ms-appdata:///local/content" + uriPath);
        }

        var file = await StorageFile.GetFileFromApplicationUriAsync(localUri);
        var stream = await file.OpenAsync(FileAccessMode.Read);

        return stream.GetInputStreamAt(0);
    }
}

Deze code haalt de HTML-pagina uit het app-pakket en sluit inhoud uit de lokale map in. Op voorwaarde dat u afbeelding "cat.jpg" in de map / local / content hebt, wordt een HTML-pagina met kattenafbeelding weergegeven.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow