Ricerca…


Osservazioni

Tutti gli esempi che prelevano i dati da un URL remoto, devono avere la funzionalità "Internet (client)" verificata nel Package.appxmanifest. Per esempi che manipolano solo dati locali non è necessario.

Vai a Uri

Questo codice naviga semplicemente su WebView su alcuni Uri:

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

o

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

Imposta un agente utente personalizzato e passa a 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);

Passare alla stringa

Mostra la stringa html specificata 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);

Apri il file HTML dal pacchetto dell'app

Puoi facilmente aprire un file dal pacchetto dell'app, ma lo schema Uri deve essere "ms-appx-web" anziché "ms-appx":

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

Apri il file HTML dalla cartella locale dell'app o dalla cartella temporanea

Per aprire un file dalla cartella locale o dalla cartella temporanea, il file di destinazione non deve trovarsi nella radice di tali cartelle. Per motivi di sicurezza, per evitare che altri contenuti vengano esposti da WebView, il file destinato alla visualizzazione deve trovarsi in una sottocartella:

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

Nel caso in cui NavigateToString non possa gestire alcuni contenuti, utilizzare il metodo NavigateToLocalStreamUri. Forzerà ogni URI referenziato localmente all'interno della pagina HTML per chiamare la speciale classe resolver, che può fornire il contenuto giusto al volo.

File Assets / Html / html-sample.html:

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

Codice:

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);
    }
}

Questo codice prenderà la pagina HTML dal pacchetto dell'app e incorporerà il contenuto dalla cartella locale al suo interno. A condizione che tu abbia un'immagine "cat.jpg" nella cartella / local / content, mostrerà la pagina HTML con l'immagine cat.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow