如何在WPF中获取WebView的文档?

时间:2019-04-11 04:47:30

标签: c# wpf webview microsoft-edge

我正在使用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))

谢谢

1 个答案:

答案 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文档。