分享 WebBrowser顯示Html內容3點細節技巧,解決刷新后空白


直接顯示Html內容,不像直接導航網址容易處理:

問題:按微軟的控件屬性提示,可以用WebBrowser.DocumentText 屬性賦值 ,但是這種賦值,只是首次有效,后續切換都沒啥作用。

下面給出自己追求摸索的兩點技巧:

 1:通過WebBrowser.Document.Write(html)方法來輸出html內容顯示。

由於WebBrowser 需要經歷幾個事件后才會顯示,直接輸出是不行的,為此,需要有點技巧的使用:

wbShowBlog.Navigate( " about:blank ");
while (wbShowBlog.ReadyState != WebBrowserReadyState.Complete)
{
     Application.DoEvents();
}
wbShowBlog.Document.Write(html) 

先導航到空白頁,再輸出需要顯示的Html內容,用這個方法解決。

 2:二次顯示內容,應該用節點替換,而不是重新輸出內容

 一開始都調用輸出顯示,結果切換內容時,偶爾會出現切換后不顯示新內容的問題。

 在多次反復的試驗中,反反復復,時好時壞之后,決定想法處理掉這個問題,為此,本人又想到另一種解決的方式:

if (wbShowBlog.Document ==  null)

{
 string html = htmlTemplate.Replace("{0}", blogText);
 wbShowBlog.Navigate("about:blank");
 while (wbShowBlog.ReadyState != WebBrowserReadyState.Complete)
 {
    Application.DoEvents();
   }
   wbShowBlog.Document.Write(html);//這里有問題,明天處理。

}
else
{
       wbShowBlog.Document.GetElementById("weibospiritBody").InnerHtml = blogText;
}

第二次時,通過直接切換內部某節點的InnerHtml來顯示內容,而不是重新對瀏覽器賦值,通過這個方式,完美的解決了這個問題。

3:Document.Write(html) 帶iframe時,解決iframe默認不顯示的神秘問題

終於,直到某天,新的策略變化,內容下方的廣告,不是直接顯示內容,而且想套一個iframe來顯示網頁地址,這時候又發現新問題:

通過Document.Write出來的iframe竟然顯示不出來,折騰過后,發現刷新一下瀏覽器可以顯示出來,為此,又補上一招,變成:

if (wbShowBlog.Document ==  null)   

{
   string html = htmlTemplate.Replace("{0}", blogText);
   wbShowBlog.Navigate("about:blank");
   while (wbShowBlog.ReadyState != WebBrowserReadyState.Complete)
   {
      Application.DoEvents();
   }
    wbShowBlog.Document.Write(html);//這里有問題,明天處理。
    wbShowBlog.Refresh();//不刷新一下,Iframe顯示不出來。
}
else
{
    wbShowBlog.Document.GetElementById("weibospiritBody").InnerHtml = blogText;
}

 就是多一行刷新,解決了這個問題,以上就是3個細節點。

分享自:http://www.cnblogs.com/cyq1162/archive/2012/03/27/2419655.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM