我正在使用Microsoft Toolkit Web View将 Microsoft Edge 嵌入我的 WPF C#应用程序中。
无论如何我都找不到要获取的文档和webview的innerHTML,文档中也没有任何内容。
这里是XAML:
<UserControl x:Class="webviewtest.MainControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:webv="clr-namespace:Microsoft.Toolkit.Wpf.UI.Controls;assembly=Microsoft.Toolkit.Wpf.UI.Controls.WebView"
xmlns:local="clr-namespace:webviewtest"
mc:Ignorable="d"
Width="500" Height="500" >
<Grid>
<webv:WebView x:Name="webview_browser" Margin="0" IsJavaScriptEnabled="True" IsPrivateNetworkClientServerCapabilityEnabled="True"/>
</Grid>
</UserControl>
这是C#:
public partial class MainControl : UserControl
{
public MainControl()
{
InitializeComponent();
webview_browser.Source = new Uri(@"http://google.com");
///// HOW TO GET webview_browser CONTENT AND HTML DOCUMENT
}
}
我也尝试过:
string GETHTML = webview_browser.InvokeScript(@"document.innerHTML").ToString();
但是我得到这个错误:
System.AggregateException:'发生一个或多个错误。例外: 未知名称。 (来自HRESULT的异常:0x80020006 (DISP_E_UNKNOWNNAME))
谢谢
答案 0 :(得分:0)
将此方法添加到您的MainControl
类中
async private void WebView_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
{
string html = await webview.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });
_html = html; //A property of your class to store the value when the event is fired
}
并更改此内容:
<webv:WebView x:Name="webview_browser" Margin="0" IsJavaScriptEnabled="True" IsPrivateNetworkClientServerCapabilityEnabled="True"/>
对此:
<webv:WebView x:Name="webview_browser" Margin="0" IsJavaScriptEnabled="True" IsPrivateNetworkClientServerCapabilityEnabled="True" DOMContentLoaded="WebView_DOMContentLoaded"/>
在页面加载后获取html文档。