수색…


비고

원격 URL에서 데이터를 가져 오는 모든 예제는 Package.appxmanifest에서 "인터넷 (클라이언트)"기능을 선택해야합니다. 로컬 데이터 만 조작하는 예는 필요하지 않습니다.

우리 (Uri)로 이동

이 코드는 단순히 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를 특수 분석기 클래스로 호출하여 강제로 올바른 내용을 제공 할 수 있습니다.

저작물 / 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"이 있으면 cat 이미지가있는 HTML 페이지가 표시됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow