WebView

Последнее обновление: 12.11.2017

WebView представляет элемент для отображения html-кода. Загружаемый html-код может представлять код веб-страниц с веб-сайтов, код локальных страниц или код html, который формируется программно. То есть фактически это мини веб-браузер.

Следует отметить ряд особенностей WebView:

  • этот элемент не поддерживает большинство событий ввода, которыми обладают другие элементы управления

  • для рендеринга он использует движок Microsoft Edge

  • он не поддерживает элементы ActiveX, плагины, а также некоторые функциональности HTML5, в частности, AppCache, IndexedDB, программный доступ к буферу обмена, геолокацию

  • он поддерживает навигацию по ресурсам, использующим протоколы HTTP, HTTPS, ms-appx-web и ms-appdata

Адрес ресурса

За установку ресурса, отображаемого в WebView, отвечает свойство Source. В качестве значения это свойство принимает путь к ресурсу. В зависимости от расположения ресурса мы можем использовать различные пути.

Например, загрузим страницу по адресу https://www.microsoft.com:

<WebView x:Name="webView" Source="https://www.microsoft.com" />
WebView в UWP

Для просмотра локальных ресурсов следует использовать схемы доступа ms-appx-web и ms-appdata. Например, пусть у нас в проекте есть папка pages, которая содержит html-страницы.

WebView в Universal Windows Platform

Тогда, чтобы обратиться к локальным html-страницам из этой папки, нам надо использовать формат ms-appx-web:

<WebView x:Name="webView" Source="ms-appx-web:///pages/page1.html" />

Если необходимая папка с html-страницами располагается на локальном компьютере в локальной папке пользователя или в каталоге temp, то к таким страницам мы можем обратиться по следующим путям:

ms-appdata:///local/pages/page1.html
ms-appdata:///temp/pages/page1.html

Программная навигация

Для управления элементом мы можем использовать его методы и события. Ряд методов позволяют загружать контент:

  • NavigateToString: переход к строке кода, который формируется программно. Например:

    string html = "<h2>Hello world45!</h2>";
    webView.NavigateToString(html);
  • Navigate: переход по определенному пути. Например:

    Uri uri = new Uri("http://msdn.com");
    webView.Navigate(uri);
    // uri на локальный адрес
    // Uri uri = new Uri("ms-appx-web:///pages/page1.html");
    

События WebView

Некоторые важные события:

  • NavigationStarting: генерируется до начала перехода WebView к указанному ресурсу. Мы можем использовать это событие, к примеру, чтобы оставить переход к ресурсу:

    public sealed partial class MainPage : Page
    {
    	public MainPage()
    	{
    		this.InitializeComponent();
    		webView.NavigationStarting += webView_NavigationStarting;
    	}
    
    	private void webView_NavigationStarting(object sender, WebViewNavigationStartingEventArgs args)
    	{
    		// Останавливаем навигацию
    		if (args.Uri.Host == "yandex.ru")
    			args.Cancel = true;
    	}
    }
    
  • ContentLoading: генерируется до начала загрузки контента

  • DOMContentLoaded: возникает, после того, как WebView закончит загрузку и парсинг контента

  • NavigationCompleted: возникает после завершения перехода к ресурсу

Причем все эти события возникают именно в той последовательности, в которой они тут перечислены.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850