0
我一直在使用SaveToString()方法獲取WebBrowser控件中頁面的源代碼。但由於其在Windows 10,被否決什麼在視窗10WebView SaveToString()等效
我一直在使用SaveToString()方法獲取WebBrowser控件中頁面的源代碼。但由於其在Windows 10,被否決什麼在視窗10WebView SaveToString()等效
的WebView的WebView控件的等效SaveToString()允許我們調用腳本,我們可以轉儲document.documentElement.outerHTML做同樣的作爲SaveToString()。
下面顯示了一個非常簡單的測試示例。請注意,我沒有嘗試製作一個很酷的用戶界面設計,並將所有東西都格式化,但只是試圖向您展示這個想法。
在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;
}
感謝您的幫助! – Razor