我正在使用Windows Phone 8浏览器控件开发浏览器应用程序。
该应用程序使用WebClient将外部网页下载到后台的字符串中。然后浏览器使用
导航到内容 webBrowser.NavigateToString(str);
但是,浏览器不显示页面,而是显示HTML代码。我想因为没有对字符串进行任何更改,NavigateToString
应该无缝地处理它。或许我错过了一些东西。
那么如何显示HTML页面而不是代码?
修改
这是我的一些代码
webClient = new WebClient();
webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
webClient.DownloadStringAsync(new Uri(uri));
private void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
PageString = e.Result;
}
...
webBrowser.NavigateToString(PageString);
答案 0 :(得分:5)
这是Windows Phone 8的问题。
Here你有一个解决方法。
答案 1 :(得分:3)
使用DownloadStringAsync
时,它还会下载DOCTYPE
声明。您可以删除此内容并使用<html>
块启动代码,因为NavigateToString
似乎不喜欢<!DOCTYPE HTML>
声明。
webClient = new WebClient();
webClient.DownloadStringCompleted += webClient_DownloadStringCompleted;
webClient.DownloadStringAsync(new Uri(uri));
void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
//remove "<!DOCTYPE HTML>"
PageString = e.Result.Replace("<!DOCTYPE HTML>","").Trim();
}
webBrowser.NavigateToString(PageString);
答案 2 :(得分:0)
WebBrowser.NavigateToString的文档说:
如果text参数不是有效的HTML格式,它将显示为纯文本。
您可以查看str
是否采用有效的HTML格式吗?
private void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
PageString = e.Result;
webBrowser.NavigateToString(PageString);
}
答案 3 :(得分:0)
另一种方式:
wb.Navigate("");
do
{
Application.DoEvents();
} while ((wb.ReadyState != WebBrowserReadyState.Complete));
wb.Document.Body.InnerHtml = "Html";