WebBrowser 顯示Html內容3點細節技巧


先上技術內容,后面再感慨幾句:


早在(新浪)微博粉絲精靈的評論平台(現在移到微博人氣精靈)里,需要有空間來顯示新浪微博的內容,如下圖:

 


在圖片的右側,是一個WebBrowser 控件,用來顯示新浪微博的內容給用戶評論,然則卻遇到不少問題。

 

直接顯示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個細節點。

 

下面感慨幾句:

 

現在很少寫技術文章了,曾經天天寫着文章,如今一個月才寫一篇一小而短的文章,憶往昔,往事不堪回首了!


從離職到私奔出來自己折騰,快近一年了,從折騰秋色園CYQ.Data 數據框架CYQ.DBImport(數據庫互導工具)、CYQ.IISLogViewer(IIS日志分析工具)

 

到現在轉戰新浪微博粉絲精靈,一直在忙碌,基本都在一線開發,戰線似乎拉的點長,有些都顧不上更新版本了,要做的事太多了,所以沒以前那會那么閑了,可以天天寫文章。

 

偶爾會發一發微博,有閑可以關注下我的新浪微博:http://weibo.com/cyqdata

 

 

 

 


免責聲明!

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



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