我有一个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? 我怎么能这样做?
答案 0 :(得分:1)
问题是返回了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());
}
如果您想获取网页内容。你可以参考这个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;
}