Ответ 1
Для этого вам нужно использовать событие ScriptNotify. Вот как я обработал сценарий (используя NavigateToString). Если вы извлекаете содержимое веб-представления из URL-адреса, вам нужно будет иметь возможность изменять HTML-код для работы.
-
Добавьте в свой HTML-код следующий Javascript
<script type="text/javascript">for (var i = 0; i < document.links.length; i++) { document.links[i].onclick = function() { window.external.notify('LaunchLink:' + this.href); return false; } }</script>
Это добавляет обработчик onclick к каждой ссылке (< a href= "..." > </a> ) на странице. window.external.notify - это метод Javascript, который работает в Webview.
-
Добавьте обработчик события ScriptNotify в веб-представление.
WebView.ScriptNotify += WebView_ScriptNotify;
-
Объявить обработчик событий
async private void WebView_ScriptNotify(object sender, NotifyEventArgs e) { try { string data = e.Value; if (data.ToLower().StartsWith("launchlink:")) { await Launcher.LaunchUriAsync(new Uri(data.Substring("launchlink:".Length), UriKind.Absolute)); } } catch (Exception) { // Could not build a proper Uri. Abandon. } }
Обратите внимание, что если вы используете внешний URL-адрес, это должно быть добавлено в веб-просмотр, разрешенный белый список Uris (http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.webview.scriptnotify для справки).