3

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

4 回答 4

5

这是 Windows Phone 8 的问题。

在这里,您有一个解决方法。

于 2013-05-13T06:17:12.960 回答
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);
于 2013-05-10T19:54:35.283 回答
0

WebBrowser.NavigateToString的文档说:

如果 text 参数不是有效的 HTML 格式,它将显示为纯文本。

你能检查是否str是有效的 HTML 格式吗?

private  void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
     PageString = e.Result;
     webBrowser.NavigateToString(PageString); 
}
于 2013-05-10T18:01:00.683 回答
0

另一种方式:

        wb.Navigate("");
        do
        {
            Application.DoEvents();
        } while ((wb.ReadyState != WebBrowserReadyState.Complete));
        wb.Document.Body.InnerHtml = "Html";
于 2013-05-20T22:06:03.287 回答