如何访问和操作WebView的DOM和JavaScript?

时间:2018-06-05 20:16:33

标签: c# uwp

我有一个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 :(得分:1)

  

问题是返回了e.Uri,但e.Content为空。

ContentNavigationEventArgs属性用于获取目标网页内容的根节点。该页面是xaml页面,但不是网页。您可以使用Frame.Navigated事件对其进行验证。页面导航后,您可以获得Content的值。

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

如果您想获取网页内容。你可以参考这个reply。有一些更新:

  

要在调用window.external.notify时启用外部网页以触发ScriptNotify事件,您必须在应用清单的 ApplicationContentUriRules 部分中包含该页面的统一资源标识符(URI)。

用于获取body html的以下eval方法。

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;
}