uwp
Навигация по WebView
Поиск…
замечания
Все примеры, которые извлекают данные из удаленного 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);
Перейдите к строке
Показывать указанную строку html в 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);
Открыть HTML-файл из пакета приложений
Вы можете легко открыть файл из своего пакета приложений, но схема Uri должна быть «ms-appx-web» вместо «ms-appx»:
var uri = new Uri("ms-appx-web:///Assets/Html/html-sample.html");
this.webView.Navigate(uri);
Открыть HTML-файл из локальной папки приложения или папки temp
Чтобы открыть файл из локальной папки или папки temp, целевой файл не должен находиться в корне каталога. Из соображений безопасности, чтобы предотвратить показ другого контента WebView, файл, предназначенный для отображения, должен быть расположен во вложенной папке:
var uri = new Uri("ms-appdata:///local/html/html-sample.html");
this.webView.Navigate(uri);
NavigateToLocalStreamUri
Если NavigateToString не может обрабатывать какой-либо контент, используйте метод NavigateToLocalStreamUri. Это заставит каждый локализованный URI внутри HTML-страницы вызвать специальный класс распознавателя, который может обеспечить правильное содержимое «на лету».
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-страницу из пакета приложений и вставлять содержимое из локальной папки в нее. Если у вас есть образ «cat.jpg» в папке / local / content, он покажет HTML-страницу с изображением кошки.