浏览器控件NavigateToString显示HTML代码而不是呈现页面

时间:2013-05-10 17:51:16

标签: c# html windows-phone-8 webbrowser-control

我正在使用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 个答案:

答案 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";