Как получить доступ и управлять DOM и JavaScript в WebView? - PullRequest
0 голосов
/ 05 июня 2018

У меня есть WebView, к которому я перехожу по URL, и я хочу прочитать его содержимое, взаимодействовать с JavaScript и т. Д.

Я пытался

XAML:

<WebView Name="wv1" LoadCompleted="wv1_LoadCompleted" />

C # код:

private void wv1_LoadCompleted(object sender, NavigationEventArgs e)
{
    var uri = e.Uri;

    var c = e.Content;
}

Проблема в том, что возвращается e.Uri, но e.Content равно нулю.

Как получить доступ к DOM?Как я могу это сделать?

1 Ответ

0 голосов
/ 06 июня 2018

Проблема в том, что e.Uri возвращается, но значение e.Content равно нулю.

Свойство Content NavigationEventArgs используется для получения корневого узла содержимого целевой страницы.Страница является страницей xaml, но не веб-страницей.Вы можете проверить это с помощью события Frame.Navigated.При навигации по странице вы можете получить значение Content.

private void RootFrame_Navigated(object sender, NavigationEventArgs e)
{
    System.Diagnostics.Debug.WriteLine(e.Content.ToString()); 
}

Если вы хотите получить содержимое веб-страницы.Вы могли бы отослать это ответ .С некоторыми обновлениями:

Чтобы разрешить внешней веб-странице вызывать событие ScriptNotify при вызове window.external.notify, необходимо включить универсальный идентификатор ресурса (URI) страницы в ApplicationContentUriRules раздел манифеста приложения.

Следующий метод eval, используемый для получения html тела.

string functionString = @"window.external.notify(document.getElementsByTagName('body')[0].innerHTML)";
await Test.InvokeScriptAsync("eval", new string[] { functionString });

И вы можете получить обработчик события ScriptNotify.

private void Test_ScriptNotify(object sender, NotifyEventArgs e)
{
    var body = e.Value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...