Buscar..


Observaciones

Todos los ejemplos que obtienen datos de una URL remota deben tener la capacidad "Internet (cliente)" activada en el archivo Package.appxmanifest. Para ejemplos que solo manipulan datos locales no es necesario.

Este código simplemente navega por WebView a algunos Uri:

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

o

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

Establecer agente de usuario personalizado y navegar 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);

Mostrar la cadena html especificada en 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);

Abrir archivo HTML desde el paquete de la aplicación

Puede abrir fácilmente un archivo desde su paquete de aplicaciones, pero el esquema Uri debe ser "ms-appx-web" en lugar de "ms-appx":

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

Abra el archivo HTML desde la carpeta local de la aplicación o la carpeta temporal

Para abrir un archivo desde la carpeta local o la carpeta temporal, el archivo de destino no debe estar ubicado en la raíz de esas carpetas. Por razones de seguridad, para evitar que WebView exponga otros contenidos, el archivo destinado a mostrar debe ubicarse en una subcarpeta:

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

En caso de que cuando NavigateToString no pueda manejar algún contenido, use el método NavigateToLocalStreamUri. Obligará a cada URI con referencia local dentro de la página HTML a llamar a la clase de resolución especial, que puede proporcionar contenido correcto sobre la marcha.

Archivo de activos / 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>

Código:

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

Este código tomará la página HTML del paquete de la aplicación e insertará el contenido de la carpeta local en él. Siempre que tenga la imagen "cat.jpg" en la carpeta / local / content, se mostrará la página HTML con la imagen del gato.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow