サーチ…


備考

リモートURLからデータを取得するすべての例では、Package.appxmanifestで「インターネット(クライアント)」機能をチェックする必要があります。ローカルデータのみを操作する例では、必要ではありません。

ウリに移動する

このコードは、単にWebViewをUriにナビゲートします。

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

または

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

HttpRequestMessageでナビゲートする

カスタムユーザーエージェントを設定し、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);

文字列に移動する

WebViewで指定されたHTML文字列を表示する:

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

アプリパッケージからHTMLファイルを開く

アプリパッケージから簡単にファイルを開くことはできますが、Uriスキームは "ms-appx"ではなく "ms-appx-web"でなければなりません。

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

アプリのローカルフォルダまたは一時フォルダからHTMLファイルを開く

ローカルフォルダまたは一時フォルダからファイルを開くには、ターゲットファイルがそのフォルダルートに位置はいけません 。セキュリティ上の理由から、WebViewによって他のコンテンツが公開されないようにするには、表示用のファイルをサブフォルダに配置する必要があります。

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

NavigateToStringが一部のコンテンツを処理できない場合は、NavigateToLocalStreamUriメソッドを使用します。 HTMLページ内のローカル参照されているすべてのURIを強制的に特殊リゾルバクラスに呼び出すことで、即座に適切なコンテンツを提供することができます。

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>

コード:

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

このコードは、アプリケーションパッケージからHTMLページを取得し、ローカルフォルダのコンテンツを埋め込みます。 / local / contentフォルダに "cat.jpg"という画像があれば、猫の画像を含むHTMLページが表示されます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow