WebView SaveToString()等效

时间:2015-10-04 05:19:24

标签: webview windows-10 windows-10-mobile

我一直在使用SaveToString()方法在WebBrowser Control中获取页面的源代码。但由于它在Windows 10中被弃用,与Windows 10的WebView控件中的SaveToString()相当。

1 个答案:

答案 0 :(得分:0)

WebView允许我们调用脚本,我们可以转储document.documentElement.outerHTML来执行与SaveToString()相同的操作。

以下显示了一个非常简单的测试样本。请注意,我没有尝试制作出酷炫的UI设计并将所有内容格式化,但只是试图向您展示这个想法。

在xaml

    <StackPanel>
        <WebView x:Name="MyWebView" Source="http://www.bing.com" Height="200" 
                 DOMContentLoaded="MyWebView_DOMContentLoaded"/>
        <Button x:Name="ViewSourceBtn" Content="View Source" Click="ViewSourceBtn_Click"/>
        <RichTextBlock x:Name="SourceBlock" Height="300" >
        </RichTextBlock>
    </StackPanel>

代码

    bool contentloaded = false;
    private async void ViewSourceBtn_Click(object sender, RoutedEventArgs e)
    {
        if (contentloaded)
        {
            string html = await MyWebView.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });
            var paragraph = new Paragraph();
            paragraph.Inlines.Add(new Run { Text = html });
            SourceBlock.Blocks.Clear();
            SourceBlock.Blocks.Add(paragraph);
        }
        else
        {
            string err = "Waiting for HTML content to load!";
            var paragraph = new Paragraph();
            paragraph.Inlines.Add(new Run { Text = err });
            SourceBlock.Blocks.Clear();
            SourceBlock.Blocks.Add(paragraph);
        }
    }

    private void MyWebView_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
    {
        contentloaded = true;
    }

点击查看源按钮,结果如下: enter image description here